web-dev-qa-db-ja.com

名前付き範囲は特定の条件下では機能しませんか?

今日はこれで髪を引き裂いています。できる限り簡潔にします。

多くの名前付き範囲がありますが、それらがなくてもうまく機能する長くてworksい式でそれらを参照したいと思います。しかし、名前付き範囲に切り替え始めると、事態は奇妙になります。

元の作業式:

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

使用される値は次のとおりです。

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

適切なURLを構築し、index()を使用して目的のテーブルをインポートします。すべては順調です。最終URLはhttp://finance.yahoo.com/quote/COH160916P00041000です

しかし、セル参照ではなく名前付き範囲の追加を開始すると、物事は横向きになります。

これはエラーで失敗します:=INDEX(IMPORTHTML("http://finance.yahoo.com/quote/"&Symbol&TEXT(Expires,"yymmdd")&Trade_Type&TEXT(SUBSTITUTE(Strike_Price,".",""),"0000000")&"0","table",1),3,2)

名前付き範囲はすべて有効であり、適切に色分けされていますが、エラーが発生します:

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

物事をより面白くするために...私はこれを別のセルに入れることができます:

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

そして、正常に機能する完全に適切なURLを構築します。その後、次のように元の式からそのセルを参照できます。

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

そしてそれはすべて完全に機能します。

それで、一体何がここで起こっているのでしょうか?名前付き範囲が最初のindex(importhtml())式で直接機能しないのはなぜですか?

3

名前付き範囲がパラメーターとして存在する場合にINDEXが機能しないが、他の場合には機能する理由については、まだはっきりしていません。

問題は、 INDEX は公式ドキュメントに記載されているように、最初のパラメーターがスプレッドシートの範囲への参照である必要があることだと思っていました。

既に見つけた数式形式に加えて、INDEXの代わりに QUERY を使用することもできます。例:

 = QUERY(
 IMPORTHTML(
 "http://finance.yahoo.com/quote/"&
 Symbol&
 TEXT(Expires、 "yymmdd")&
 Trade_Type&
 TEXT(SUBSTITUTE(Strike_Price、 "。"、 "")、 "0000000")&
 "0"、
 " table "、
 1 
)、
" Col1 = 'Bid'のCol2を選択 "、
 0 
)

Bidは3行目のラベルであるため、3行2列の値を取得するために使用しました。

他の選択肢もありますが、スプレッドシートユーザーとしての個人的な好みやユースケースに依存します。

2
Rubén