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

如何在Excel中从其他工作表返回指定单元格范围数据?

嘿,这个需求我之前帮朋友处理过,其实用Excel的几个函数组合就能完美实现,分两种场景给你说:

情况1:你用的是Excel 365/2021(支持动态数组)

这种情况最简单,直接用动态数组函数自动溢出填充,不用手动拖拽。假设SheetA的A列是你存储的起始单元格地址(比如A1是C251),在SheetA的B1单元格输入下面的公式:

=TRANSPOSE(INDEX(SheetB:SheetB,ROW(INDIRECT(A1))+SEQUENCE(100)-1,COLUMN(INDIRECT(A1))))

输入完按回车就行,公式会自动向右填充100列,正好对应SheetB中起始单元格所在列的100行数据(比如C251到C350)转成水平一行。

公式拆解:

  • INDIRECT(A1):把A列里的文本地址(比如C251)转换成实际的单元格引用
  • ROW(INDIRECT(A1)):提取起始单元格的行号(比如251)
  • SEQUENCE(100)-1:生成0到99的序列,和起始行号相加后,就得到251到350的行范围
  • COLUMN(INDIRECT(A1)):提取起始单元格的列号(比如C列对应3)
  • INDEX(...):从SheetB中取出该列对应行范围的所有数据(垂直的100行)
  • TRANSPOSE:把垂直的数据转成水平的一行,Excel会自动向右溢出填充
情况2:你用的是旧版Excel(不支持动态数组)

这种情况需要用数组公式配合拖拽填充。假设SheetA的A列是起始地址,在SheetA的B1单元格输入下面的公式,然后按Ctrl+Shift+Enter(必须按这个组合键触发数组公式):

=INDEX(SheetB:SheetB,ROW(INDIRECT($A1))+COLUMN(A1)-1,COLUMN(INDIRECT($A1)))

之后,选中B1单元格,向右拖拽填充100列(到CV1),再选中整行的公式区域,向下拖拽填充到SheetA的每一行即可。

公式拆解:

  • $A1:锁定A列,向下拖拽时始终引用当前行的起始地址
  • COLUMN(A1)-1:向右拖拽时,COLUMN(A1)会变成COLUMN(B1)=2、COLUMN(C1)=3...减1后得到0、1、2...99,和起始行号相加就对应SheetB的目标行
  • 其他部分的逻辑和上面的动态数组版本一致

注意事项:

  • 确保SheetB中起始单元格所在列有至少100行数据,否则公式会返回#N/A#REF!错误
  • 起始地址的文本格式要正确(比如C251,不要加引号或多余字符),否则INDIRECT函数无法识别

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

火山引擎 最新活动