Excel / SheetsのImportHtml / IMPORTXML-可変サイズのコンテンツの後に次のインデックスをロード


1

ImportHtmlなどの関数を使用して、表形式のデータをGoogleスプレッドシートにインポートしています。各テーブルには同じヘッダーがありますが、行数が不明です。URLのリストの各テーブルが、最後の下に表示され、各見出しが同じ列の下に配置されている必要があります。

テーブルを含むURLのリストを入力するだけで、範囲内で指定するURLの数に応じて、スプレッドシート内にテーブルが1つ下に表示されます。

データは次のようになります。

私が達成したいこと

私の難しさは、どの関数を使用する必要があるのか​​わからないことです。

  • 基本的に、ImportHtmlを使用してデータを挿入し、列Aの次のURLが前の表の終わりの直後に来るように表のサイズを見つける必要があります。
  • 次に、列Aで、インデックスをインクリメントして、列Iから次のURLを取得します。
  • これで、列AのURLを使用して列Dに= ImportHtml関数を挿入できます(もちろん、列Iから次のインデックスを取得することもできますが、データの横にあるURLを確認すると便利です)。

データが行DFで終了したときに列Aに知らせてから次のインデックス付きURLを取得するのは簡単ですが、列Dを介してImportHtml関数を埋める方法はわかりません。データは非アクティブなImportHtmlです。

おそらく最も効率的な関数の代わりに不正なハッキング手法を使用しているため、循環計算の問題が発生し続けています。

回避策は、たとえば、各呼び出しの下に500セルのバッファーを残すことですが、テーブルは2〜2000行の長さになる可能性があるため、これは機能しません。また、何らかの理由で範囲内のURLの数が変化した場合も困難になります。

これを行う最良の方法は何ですか?


このためのスクリプト作成の領域に忍び込んでいるかもしれません。あなたがすでに遭遇したようなエラーでIMPORTHTML文句を言うことなく、セルがその上にあるものに基づいてその内容を決定する方法を考えることはできませんREF#
マイケルフランク

うわー、ありがとう、しかし驚いたと言わざるを得ない-単純なスプレッドシートの数式でやったことのいくつかと比較して、これは信じられないほど基本的なことだ。何らかの「インポート後のバッファ」を持つ簡単な方法があることを本当に望みました。他の唯一のオプションは、新しいシートを作成することでしょうか?または、テーブルがすべて固定幅であるため、テーブルを水平に配置します。わからない
...-トルコファント

ImportHtmlを他のセルにインポートする方法がない場合、最も有効な方法は、インポートされたテーブルの信じられないほどspanい水平スパンですそれ。
トルコファント

回答:


0

答えは私が思ったより明白でした!

ArrayFormulaを使用するだけです:

{ImportHtml(I1,"table",1);ImportHtml(I2,"table",1);ImportHtml(I3,"table",1);ImportHtml(I4,"table",1);ImportHtml(I5,"table",1);ImportHtml(I6,"table",1);ImportHtml(I7,"table",1);ImportHtml(I8,"table",1);ImportHtml(I9,"table",1);ImportHtml(I10,"table",1)}

または:

=ArrayFormula({ImportHtml(I1,"table",1);ImportHtml(I2,"table",1);ImportHtml(I3,"table",1);ImportHtml(I4,"table",1);ImportHtml(I5,"table",1);ImportHtml(I6,"table",1);ImportHtml(I7,"table",1);ImportHtml(I8,"table",1);ImportHtml(I9,"table",1);ImportHtml(I10,"table",1)})

ドキュメントエディターのヘルプから:

配列式

配列数式から返された値を複数の行や列に表示したり、配列で非配列関数を使用したりできます。

サンプルの使用法

ARRAYFORMULA(SUM(IF(A1:A10> 5、A1:A10、0)))

ARRAYFORMULA(A1:C1 + A2:C2)

構文

ARRAYFORMULA(array_formula)

array_formula-範囲、1つのセル範囲または同じサイズの複数の範囲を使用する数式、または1つのセルより大きい結果を返す関数。注多くの配列数式は、隣接するセルに自動的に展開され、ARRAYFORMULAの明示的な使用を不要にします。

数式の編集中にCtrl + Shift + Enterを押すと、ARRAYFORMULA(が数式の先頭に自動的に追加されます。

Googleスプレッドシートで配列を使用するもご覧ください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.