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

如何设置VLOOKUP向右拖动时表格区域按两列递增?

解决VLOOKUP向右拖动时table_array递增2列的问题

嘿,这个需求我太熟悉了——默认的单元格引用规则只会让table_array逐列平移,要实现每次跳2列的效果,得用点小技巧,给你三个实用方案:

方案1:用INDEX+MATCH组合(推荐,性能更稳定)

INDEX+MATCH本身就比VLOOKUP更灵活,能精准控制我们要引用的列范围。把原来的公式换成这个:

=INDEX($S:$X,MATCH($Q$3,INDEX($S:$X,,1+(COLUMN(A1)-1)*2),0),2+(COLUMN(A1)-1)*2)
  • 原理:COLUMN(A1)会随着单元格向右拖动依次返回1、2、3...,通过(COLUMN(A1)-1)*2生成0、2、4...的偏移量,让匹配列和返回列每次跳2列
  • 好处:非易失性函数,数据量大的时候不会拖慢表格性能

方案2:用OFFSET函数快速实现

如果追求简单直接,可以用OFFSET来偏移整个table_array区域:

=VLOOKUP($Q$3,OFFSET($S:$T,,(COLUMN(A1)-1)*2),2,FALSE)
  • 原理:OFFSET($S:$T,,N)表示把S:T区域向右偏移N列,(COLUMN(A1)-1)*2让每次拖动时偏移量增加2,正好得到U:V、W:X...这样的区域
  • 注意:OFFSET是易失性函数,表格数据特别多的时候可能会有轻微卡顿

方案3:用INDIRECT函数(仅适合列数不多的场景)

如果你的数据列没超过Z列,可以用ASCII码来生成列标:

=VLOOKUP($Q$3,INDIRECT(CHAR(83+(COLUMN(A1)-1)*2)&":"&CHAR(84+(COLUMN(A1)-1)*2)),2,FALSE)
  • 原理:83是字母S的ASCII码,84是T的,每次加2就能得到U(85)、V(86)、W(87)...这样的列标
  • 缺点:列数超过Z后会失效,而且可读性较差,不推荐大规模使用

小提示

拖动公式前,记得把$Q$3的引用保持绝对引用(带$符号),这样拖动时不会改变要查找的目标值,这一步你已经做对啦👍

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:18:59