我正在使用 ImportHtml 等函数将表格数据导入 Google 表格。每个表格都有相同的标题,但包含未知数量的行。我需要 URL 列表中的每个表格都显示在最后一个表格下方,并且每个标题都对齐在相同的列下。
我只需输入包含表格的 URL 列表,每个表格都会根据我在范围内提供的 URL 数量一个接一个地填充到电子表格中。
数据看起来应如下:
我的困难是我不知道我需要使用哪些功能。
- 基本上,我需要使用 ImportHtml 来插入数据,找到表的大小,以便 A 列中的下一个 URL 紧跟在上一个表的末尾。
- 然后,在 A 列中,我只需增加索引即可从 I 列中获取下一个 URL。
- 现在我可以使用 A 列中的 URL 在 D 列中插入一个 =ImportHtml 函数(当然,我可以简单地从 I 列中获取下一个索引,但查看数据旁边的 URL 会很有帮助)。
让 A 列知道 DF 行中的数据何时完成,然后获取下一个索引 URL,这很简单,但是我没有看到通过 D 列填充 ImportHtml 函数的方法,因为当它覆盖数据时它会失败,即使该数据是非活动的 ImportHtml。
我不断遇到循环计算问题,可能是因为我使用了错误的黑客方法而不是最有效的函数。
一种解决方法是每次调用时保留一个缓冲区,比如说 500 个单元格,但表格的长度可以是 2-2000 行,所以这种方法行不通。如果范围内的 URL 数量因任何原因发生变化,这种方法也会很困难。
做到这一点的最好方法是什么?
答案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({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)})
从文档编辑器帮助:
数组公式
可以将数组公式返回的值显示到多行和/或多列中,并可以将非数组函数与数组一起使用。
示例用法
数组公式(SUM(如果(A1:A10>5, A1:A10, 0)))
数组公式(A1:C1+A2:C2)
句法
ARRAYFORMULA(数组公式)
数组公式- 范围、使用一个单元格区域或多个相同大小区域的数学表达式,或返回结果大于一个单元格的函数。注意许多数组公式将自动扩展到相邻单元格,从而避免明确使用数组公式。
编辑公式时按 Ctrl+Shift+Enter 将自动添加数组公式(到公式的开头。
也可以看看在 Google 表格中使用数组。