You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多个IMPORTXML结果动态合并为单个数组?

动态提取多季RPG场景数据到单个数组的解决方案

问题背景

我尝试将多季RPG场景数据导入单个数组,但一直遇到阻碍。目前我能用以下公式获取目标URL列表:

=ARRAYFORMULA( "https://pathfinderwiki.com/" & QUERY( IMPORTXML( "https://pathfinderwiki.com/wiki/Pathfinder_Society_(second_edition)", "/html/body/div[1]/div/div[4]/main/div/div[2]/div[1]/dl[position()>=2]/dd/div/i/a/@href", "en-US"), "select * where Col1 like '%Year_of%'", 0 ) )

把这些URL放到A列,再把统一的XPATH查询语句/html/body/div[1]/div/div[4]/main/div/div[2]/div[1]/table[1]/tbody/tr[position()>1]放到B列后,手动拼接公式能提取全部五季数据:

={
IMPORTXML(A2, B2, "en-US");
IMPORTXML(A3, B3, "en-US");
IMPORTXML(A4, B4, "en-US");
IMPORTXML(A5, B5, "en-US");
IMPORTXML(A6, B6, "en-US")
}

但借助近年新增的数组函数,应该能实现动态提取,不用手动构建数组。我试过MAP、TOROW、WRAPCOLS以及SPLIT、JOIN、MOD等组合,但都没成功。想知道是否存在可行方案?

可行解决方案

方案1:BYROW + TOCOL(统一XPATH场景)

如果XPATH是固定的(比如只需要在B2单元格存放一次),用这个公式即可动态遍历所有URL并提取数据:

=TOCOL(BYROW(A2:A, LAMBDA(url, IF(url="",,IMPORTXML(url, B2, "en-US")))), 3)
  • BYROW逐个遍历A列的非空URL,对每个URL执行IMPORTXML提取对应数据
  • TOCOL将多个IMPORTXML返回的二维数组扁平化合并成单列,参数3用于过滤空值和错误结果

方案2:MAP + TOCOL(多XPATH场景)

如果每个URL需要对应不同的XPATH(B列每行都有对应语句),可以用MAP同时遍历两列:

=TOCOL(MAP(A2:A, B2:B, LAMBDA(url, xpath, IF(url="",,IMPORTXML(url, xpath, "en-US")))), 3)
  • MAP成对读取A列URL和B列XPATH,执行提取操作
  • TOCOL同样负责合并结果并过滤无效内容

保留多列结构

如果需要保留原表格的多列格式,先确认每个IMPORTXML返回的列数(比如5列),用WRAPCOLS重新组合数据:

=WRAPCOLS(TOCOL(BYROW(A2:A, LAMBDA(url, IF(url="",,IMPORTXML(url, B2, "en-US")))), 3), 5)

将公式中的5替换成实际提取的列数即可。

内容的提问来源于stack exchange,提问作者volfied

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 04:48:32