ImportHtml / IMPORTXML в Excel / Sheets - загрузить следующий индекс после содержимого переменного размера

1004
Turkeyphant

Я использую такие функции, как ImportHtml, чтобы импортировать табличные данные в Google Sheets. Каждая таблица имеет одинаковые заголовки, но содержит неизвестное количество строк. Мне нужно, чтобы каждая таблица из списка URL-адресов отображалась ниже последней с каждым заголовком, выровненным под теми же столбцами.

Я бы просто ввел список URL-адресов, содержащих таблицы, и каждый из них будет заполнен внутри электронной таблицы один под другим в зависимости от того, сколько URL-адресов я предоставляю в диапазоне.

Данные должны выглядеть так:

what I want to achieve

Моя проблема в том, что я не знаю, какую функцию (и) мне нужно использовать.

  • В основном мне нужно использовать ImportHtml для вставки данных, найти размер таблицы, чтобы следующий URL в столбце A приходился сразу после конца предыдущей таблицы.
  • Затем в столбце A я просто увеличиваю индекс, чтобы получить следующий URL из столбца I.
  • Теперь я могу вставить функцию = ImportHtml в столбец D, используя URL из столбца A (конечно, я мог бы просто взять следующий индекс из столбца I, но полезно видеть URL рядом с данными).

Достаточно тривиально сообщить столбцу A, когда данные заканчиваются в строках DF, а затем взять следующий индексированный URL-адрес, но я не вижу способа заполнить функцию ImportHtml через столбец D, поскольку она не работает, когда она перезаписывает данные, даже если это данные неактивны ImportHtml.

Я продолжаю сталкиваться с проблемами циклического вычисления, вероятно, потому что я использую неправильные хакерские методы вместо самой эффективной функции.

Обходным решением будет оставить буфер, скажем, 500 ячеек под каждым вызовом, но таблицы могут иметь любую длину от 2 до 2000 строк, поэтому это не работает. Это также затрудняет изменение количества URL-адресов в диапазоне по любой причине.

Какой лучший способ сделать это?

1
Вы можете проникнуть в сферу сценариев для этого. Я не могу придумать, каким образом ячейка может определить свой контент на основе того, что находится над ней, и при этом `IMPORTHTML` не будет жаловаться с ошибкой` REF # ', как вы уже столкнулись. Michael Frank 6 лет назад 0
Вау, спасибо, должен сказать, что я удивлен - по сравнению с некоторыми вещами, которые я делал с простыми формулами электронных таблиц, это невероятно просто. Я действительно надеялся, что найдется простой способ создать «буфер после импорта». Единственный другой вариант - заполнить новый лист? Или располагать таблицы горизонтально, поскольку они имеют фиксированную ширину. Точно сказать не могу... Turkeyphant 6 лет назад 0
Чем больше я думаю об этом, так и не импортируя какой-либо способ ImportHtml в какую-либо другую ячейку, тем более работоспособным является невероятно некрасивый горизонтальный диапазон импортируемых таблиц, потому что это единственный способ избежать того, чтобы каждая функция ImportHtml наступала на пальцы ниже Это. Turkeyphant 6 лет назад 0

1 ответ на вопрос

0
Turkeyphant

Ответ был более очевидным, чем я думал!

Просто используйте ArrayFormula:

 

или же:

=ArrayFormula() 

Из Справки Редактора Документов :

ARRAYFORMULA

Включает отображение значений, возвращаемых формулой массива, в несколько строк и / или столбцов, а также использование функций, не являющихся массивами, с массивами.

Образец использования

ARRAYFORMULA (СУММА (ЕСЛИ (А1: А10> 5, А1: А10, 0)))

ARRAYFORMULA (А1: С1 + А2: С2)

Синтаксис

ARRAYFORMULA (формула_массива)

array_formula - Диапазон, математическое выражение, использующее один диапазон ячеек или несколько диапазонов одинакового размера, или функция, которая возвращает результат, превышающий одну ячейку. Примечания Многие формулы массивов будут автоматически расширены в соседние ячейки, избегая явного использования ARRAYFORMULA .

Нажатие Ctrl + Shift + Enter во время редактирования формулы автоматически добавит ARRAYFORMULA ( в начало формулы.

Смотрите также Использование массивов в Google Sheets .

Похожие вопросы