You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel中基于另一表格列动态填充数据的实现问题

Excel中基于另一表格列动态填充数据的实现问题

看起来你想实现的是在Job表格的Name列,随着行的新增自动从People表格的Name列按顺序提取名字,这个需求挺实用的,我来帮你梳理下问题和解决方案。

先说说你之前用的{CHOOSE(ROW()-ROW(Job[#Headers]),People[[Name]:[Name]])}为什么没成功:CHOOSE函数的参数要求是“索引值+多个独立可选值”,但你直接把整个People[Name]列传进去,它没法识别成多个独立参数,所以自然起不到预期效果。

接下来给你几个可行的方案,都能实现动态填充的需求:

方案一:用INDEX+SEQUENCE实现动态数组填充(适用于Excel 365/2021支持动态数组的版本)

这是最简洁的方法,直接在Job表格Name列的第一个数据行(也就是Job[[#Data],[Name]]的第一行)输入公式:

=INDEX(People[Name],SEQUENCE(ROWS(People[Name])))

输入后按回车,公式会自动溢出填充所有People里的名字;之后如果你在People里新增了名字,Job的Name列会自动更新;要是你在Job里新增行,只要公式的溢出范围覆盖到新行,就会继续提取(如果People里还有名字的话)。

如果想让Job的Name列随新增行自动循环续接(比如People有3个名字,Job新增第4行时重复提取第一个名字),可以改成这个版本:

=INDEX(People[Name],MOD(ROW()-ROW(Job[#Headers])-1,ROWS(People[Name]))+1)

方案二:用结构化引用结合ROW实现逐行填充(兼容旧版Excel)

如果你的Excel不支持动态数组,那可以在Job[Name]列的第一个数据单元格输入:

=IFERROR(INDEX(People[Name],ROW()-ROW(Job[#Headers])),"")

然后把这个公式下拉填充到Job的所有行,之后新增行的时候,只要把公式复制过去,就会自动提取对应位置的People[Name]值;如果超出了People的行数,会显示空值,避免报错。

补充说明

  • 用Excel表格(List Object)的好处就是结构化引用很稳定,不管表格怎么调整位置,People[Name]Job[#Headers]这些引用都不会出错。
  • 如果你用的是Excel 365,更推荐动态数组的方案,不用手动下拉,完全自动填充和更新。

备注:内容来源于stack exchange,提问作者NicChik

火山引擎 最新活动