web-dev-qa-db-fra.com

Les plages nommées ne fonctionnent-elles pas dans certaines conditions?

Arrache mes cheveux aujourd'hui avec celui-ci. Je serai aussi concis que possible.

J'ai un certain nombre de plages nommées et je voudrais les référencer dans une formule longue et laide qui fonctionne sans eux, sans problème. Cependant, les choses deviennent étranges lorsque je commence à basculer vers des plages nommées.

La formule de travail originale:

=INDEX(IMPORTHTML("http://finance.yahoo.com/quote/"&B38&TEXT(I38,"yymmdd")&H38&TEXT(SUBSTITUTE(J38,".",""),"0000000")&"0","table",1),3,2)

Les valeurs utilisées sont:

B38: COH
I38: 09/16/16
H38: P
J38: 41.00

Il construit l'URL appropriée et importe la table souhaitée à l'aide de index(). Tout est bien. L'URL finale est http://finance.yahoo.com/quote/COH160916P00041000

Mais maintenant, je commence à ajouter des plages nommées plutôt que des références de cellules et les choses vont de travers.

Cela échoue avec une erreur: =INDEX(IMPORTHTML("http://finance.yahoo.com/quote/"&Symbol&TEXT(Expires,"yymmdd")&Trade_Type&TEXT(SUBSTITUTE(Strike_Price,".",""),"0000000")&"0","table",1),3,2)

Toutes les plages nommées sont valides et se codent correctement, mais le message d'erreur suivant s'affiche:

Function INDEX parameter 2 value is 3. Valid values are between 0 and 1 inclusive.

Maintenant, pour rendre les choses plus intéressantes ... Je peux mettre ceci dans une autre cellule:

="http://finance.yahoo.com/quote/"&Symbol&TEXT(Expires,"yymmdd")&Trade_Type&TEXT(SUBSTITUTE(Strike_Price,".",""),"0000000")&"0"

Et il construit une URL parfaitement correcte qui fonctionne bien. Je peux ensuite faire référence à cette cellule à partir de ma formule d'origine comme suit:

=INDEX(IMPORTHTML(AB37,"table",1),3,2)

et tout fonctionne parfaitement.

Alors qu'est-ce qui se passe ici? Pourquoi mes plages nommées ne fonctionnent-elles pas directement dans la formule initiale index(importhtml())?

3
Jonathan van Clute

En ce qui concerne la raison pour laquelle INDEX ne fonctionne pas quand il y a des plages nommées en tant que paramètres, mais fonctionne dans les autres cas, cela ne m'est pas encore clair.

Je pensais que le problème est que INDEX requiert que son premier paramètre soit une référence à une plage de feuille de calcul, comme indiqué dans la documentation officielle.

Outre les formulaires que vous avez déjà trouvés, vous pouvez utiliser QUERY au lieu de INDEX. Exemple:

 = QUERY (
 IMPORTHTML (
 "Http://finance.yahoo.com/quote/"&&.____.] Symbole & 
 TEXT (Expires, "yymmdd") & 
 Trade_Type & 
 TEXT (SUBSTITUTE (Strike_Price, ".", ""), "0000000") & 
 "0", 
 " table ", 
 1 
), 
" sélectionnez Col2 où Col1 = 'Enchère' ", 
 0 
) 

Bid est l'étiquette de la troisième ligne. Je l'ai donc utilisée pour obtenir la valeur à la ligne 3, colonne 2.

Il existe d'autres alternatives, mais elles dépendent du cas d'utilisation et de vos préférences personnelles en tant qu'utilisateur de feuille de calcul.

2
Rubén