ImportHtml / IMPORTXML in Excel / Sheets - Nächsten Index nach Inhalt variabler Größe laden

579
Turkeyphant

Ich verwende Funktionen wie ImportHtml, um Tabellendaten in Google Sheets zu importieren. Jede Tabelle hat dieselben Kopfzeilen, enthält jedoch eine unbekannte Anzahl von Zeilen. Ich brauche jede Tabelle aus einer Liste von URLs, um unter der letzten zu erscheinen, wobei jede Überschrift unter denselben Spalten ausgerichtet ist.

Ich würde einfach eine Liste von URLs eingeben, die Tabellen enthält, und jede wird in der Tabelle unter dem anderen ausgefüllt, abhängig davon, wie viele URLs ich im Bereich angeben.

Die Daten sollten so aussehen:

what I want to achieve

Meine Schwierigkeit ist, dass ich nicht weiß, welche Funktion (en) ich verwenden muss.

  • Grundsätzlich muss ich ImportHtml verwenden, um die Daten einzufügen. Suchen Sie die Größe der Tabelle, sodass die nächste URL in Spalte A unmittelbar nach dem Ende der vorherigen Tabelle angezeigt wird.
  • In Spalte A inkrementiere ich dann einfach den Index, um die nächste URL aus Spalte I zu übernehmen.
  • Jetzt kann ich eine = ImportHtml-Funktion in Spalte D mit der URL aus Spalte A einfügen (natürlich könnte ich einfach den nächsten Index aus Spalte I nehmen, aber es ist hilfreich, die URL neben den Daten zu sehen).

Es ist trivial genug, um Spalte A wissen zu lassen, wenn die Daten in Zeilen DF abgeschlossen sind, und dann die nächste indizierte URL zu verwenden. Ich sehe jedoch keine Möglichkeit, die ImportHtml-Funktion durch Spalte D auszufüllen, da diese fehlschlägt, wenn die Daten selbst dann überschrieben würden data ist eine inaktive ImportHtml.

Ich laufe immer wieder mit Kreisberechnungsproblemen konfrontiert, wahrscheinlich weil ich nicht die effizienteste Funktion, sondern falsche Hacking-Methoden verwende.

Eine Problemumgehung wäre, einen Puffer mit beispielsweise 500 Zellen bei jedem Aufruf zu belassen. Die Tabellen können jedoch zwischen 2 und 2000 Zeilen lang sein, sodass dies nicht funktioniert. Dies macht es auch schwierig, wenn sich die Anzahl der URLs im Bereich aus irgendeinem Grund ändert.

Was ist der beste Weg, dies zu tun?

1
Sie schleichen sich dafür vielleicht in die Bereiche des Scripting ein. Ich kann mir keine Möglichkeit vorstellen, eine Zelle bestimmen zu lassen, deren Inhalt basierend auf dem darüber liegenden Wert bestimmt ist, ohne dass sich IMPORTHTML mit einem REF-Fehler beschwert, auf den Sie bereits gestoßen sind. Michael Frank vor 5 Jahren 0
Wow, danke, ich muss sagen, dass ich überrascht bin. Verglichen mit einigen der Dinge, die ich mit einfachen Tabellenkalkulationsformeln gemacht habe, ist das unglaublich einfach. Ich habe wirklich gehofft, dass es einen einfachen Weg gibt, einen "Nach-Import-Puffer" zu haben. Die einzige andere Option wäre vielleicht, ein neues Blatt auszufüllen. Oder die Tische waagerecht zu haben, da sie alle eine feste Breite haben. Nicht sicher... Turkeyphant vor 5 Jahren 0
Je mehr ich darüber nachdenke, auch wenn ImportHtml nicht in einer anderen Zelle vorhanden ist, ist die praktikabelste Methode die unglaublich hässliche horizontale Spanne importierter Tabellen, da dies die einzige Möglichkeit ist, zu vermeiden, dass jede ImportHtml-Funktion auf die Zehen der darunter liegenden Tabellen tritt es. Turkeyphant vor 5 Jahren 0

1 Antwort auf die Frage

0
Turkeyphant

Die Antwort war offensichtlicher als ich dachte!

Verwenden Sie einfach ArrayFormula:

 

oder:

=ArrayFormula() 

Aus der Docs Editor-Hilfe :

ARRAYFORMULA

Ermöglicht die Anzeige von Werten, die von einer Array-Formel in mehreren Zeilen und / oder Spalten zurückgegeben werden, und die Verwendung von Nicht-Array-Funktionen mit Arrays.

Verwendungsbeispiel

ARRAYFORMULA (SUMME (WENN (A1: A10> 5, A1: A10, 0)))

ARRAYFORMULA (A1: C1 + A2: C2)

Syntax

ARRAYFORMULA (array_formula)

array_formula - Ein Bereich, ein mathematischer Ausdruck, der einen Zellbereich oder mehrere Bereiche derselben Größe verwendet, oder eine Funktion, die ein Ergebnis zurückgibt, das größer als eine Zelle ist. Hinweise Viele Arrayformeln werden automatisch in benachbarte Zellen erweitert, wodurch die explizite Verwendung von ARRAYFORMULA vermieden wird .

Durch Drücken von Strg + Umschalt + Eingabetaste während der Bearbeitung einer Formel wird automatisch ARRAYFORMULA ( am Anfang der Formel) hinzugefügt .

Siehe auch Verwenden von Arrays in Google Sheets .