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

Excel使用INDEX+SMALL组合公式无法提取合并单元格目标值,求适配公式

适配合并单元格场景的取值解决方案

方案1:Excel 365/2021及以上版本(支持动态数组)

核心逻辑是先为D列的合并单元格补全隐式存储值,再执行匹配查询,公式如下:

=IFERROR(INDEX(SCAN(,'General Journal'!D6:D11,LAMBDA(a,b,IF(b="",a,b))),SMALL(IF('General Journal'!C6:C11=B2,ROW('General Journal'!C6:C11)-5,""),ROW(A1))),"")

SCAN函数会遍历D6:D11区域,遇到空值就自动继承上一个非空值,刚好适配合并单元格仅首格存值的特性,补全所有值后再用INDEX取值就不会返回0。

注意:公式末尾的ROW(A1)是动态序列参数,下拉时会自动变为ROW(A2)、ROW(A3),对应返回第2、第3个匹配结果,不要直接使用原公式中的ROW('General Journal'!C6:C11)-5参数。

方案2:旧版Excel(无LAMBDA函数支持)

利用LOOKUP的二分法特性补全合并单元格的隐式值,公式如下,输入完成后需要按Ctrl+Shift+Enter数组回车确认:

=IFERROR(INDEX(LOOKUP(ROW(6:11),IF('General Journal'!D6:D11<>"",ROW(6:11)),'General Journal'!D6:D11),SMALL(IF('General Journal'!C6:C11=B2,ROW('General Journal'!C6:C11)-5,""),ROW(A1))),"")

公式中LOOKUP部分的逻辑是先记录D列所有非空值的行号,再用当前行号匹配距离最近的非空值行号,取出对应值,实现和SCAN相同的合并单元格值补全效果。

长期优化方案

如果不需要严格保留表格的合并单元格格式,可先取消C、D列的合并单元格,再通过「开始选项卡→查找和选择→定位条件→空值→输入=上一单元格→按Ctrl+Enter批量填充」的方式把所有隐式值填实,之后你原来的公式即可正常运行,后续表格维护也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:07