1

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

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

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

чего я хочу достичь

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

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

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

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

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

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

1 ответ1

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

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

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

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

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

Синтаксис

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .