今日はこれで髪を引き裂いています。できる限り簡潔にします。
多くの名前付き範囲がありますが、それらがなくてもうまく機能する長くて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())
式で直接機能しないのはなぜですか?
名前付き範囲がパラメーターとして存在する場合に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列の値を取得するために使用しました。
他の選択肢もありますが、スプレッドシートユーザーとしての個人的な好みやユースケースに依存します。