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

如何在Excel中实现类似pandas.DataFrame.iloc的整数位置索引?

在Excel中实现类似Pandas iloc的整数位置索引提取

我来帮你搞定这个问题!你想要在Excel里实现指定起始位置、提取指定行数的功能,类似Pandas的df.iloc,之前尝试用INDEX数组没成功,下面给你两种可行的解决方案,分别适配不同的Excel版本:

方法1:用动态数组快速实现(Excel 365/2021及以上)

如果你的Excel支持动态数组(输入公式后会自动溢出填充),这是最省心的方式:

先明确几个前提:

  • 你的数据区域是A2:B31(A列存id,B列存text,第1行是表头)
  • 把起始数据行号(比如要从id=2开始,就是第2个数据行)输入到单元格D1
  • 把要提取的行数输入到单元格E1

提取单列(id或text)

比如要提取id列,在空白单元格(比如F2)输入公式:

=INDEX(A:A, SEQUENCE(E1, 1, D1 + 1))

按回车后,公式会自动生成连续的id值。

提取text列同理,公式改成:

=INDEX(B:B, SEQUENCE(E1, 1, D1 + 1))

一次性提取整个区域(id+text)

想更高效的话,直接用这个公式提取两列:

=INDEX(A2:B31, SEQUENCE(E1), {1,2})

输入后会自动溢出填充出你要的表格,比如D1=2、E1=3时,就会得到你预期的:

idtext
2apple
3banana
4apple

公式解释:

  • SEQUENCE(E1, 1, D1 + 1):生成一个从D1+1开始的整数序列(长度为E1),这里D1+1是因为第一个数据行在Excel的第2行(对应数据行1),所以数据行N对应的Excel行号是N+1。
  • INDEX函数根据这个序列里的行号,精准提取对应单元格的值。

方法2:兼容旧版Excel(无动态数组)

如果你的Excel版本比较旧,不支持动态数组,就用数组公式(注意要按Ctrl+Shift+Enter确认输入,而不是单纯回车):

同样用D1存起始数据行号,E1存提取行数:

  1. 先选中要放结果的单元格区域(比如要提取3行,就选中F2:F4放id,G2:G4放text)
  2. 在编辑栏输入提取id的公式:
=INDEX(A:A, ROW(INDIRECT(D1+1&":"&D1+E1)))
  1. 按住Ctrl+Shift+Enter完成输入,公式会自动填充到选中的区域里。

提取text列的公式类似,把A:A改成B:B即可。

公式解释:

  • INDIRECT(D1+1&":"&D1+E1):生成一个Excel行号范围的字符串(比如D1=2、E1=3时,就是"3:5",对应Excel的第3到5行,也就是数据行2到4)
  • ROW(...):获取这个范围内的所有行号,作为INDEX函数的行参数,数组公式会把每个行号对应的值填充到选中的单元格中。

为啥之前用INDEX数组没成功?

大概率是这几个原因:

  • 没搞清楚数据行号和Excel实际行号的对应关系(数据行1对应Excel行2)
  • 旧版Excel里没按Ctrl+Shift+Enter来确认数组公式
  • 没有生成连续的行号序列,只给INDEX指定了单个行号,没法批量提取

这样应该就能完美实现你要的功能啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:17:50