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

如何用数组公式判断值是否存在于表头指定列中?

问题:生成数组公式判断值是否存在于对应类别列中

我需要为表格的「是否存在?」列生成公式:若「值」列内容存在于「类别」列值对应的表头列中,则显示「Y」,否则显示「N」。

单个单元格可正常使用的公式:

=if($A2="","",iferror(if(MATCH($B2,index($D$1:$F,,MATCH($A2,$D$1:$F$1,0)),0),"Y"),"N"))

但尝试在C1单元格使用以下数组公式时无法生效:

={"Found?"; ARRAYFORMULA(if($A2:$A="","",iferror(if(MATCH($B2:$B,index($D$1:$F,,MATCH($A2:$A,$D$1:$F$1,0)),0),"Y"),"N")))}

对应表格:

类别值是否存在?颜色尺寸口味
ColorsBlackYBlueSmallStrawberry
ColorsBlueYRedMediumChocolate
ColorsGreenYOrangeLargeVanilla
ColorsOrangeYYellowExtra LargePeach
ColorsPinkNGreenOrange
ColorsRedYWhite
ColorsVioletNBlack
ColorsWhiteY
ColorsYellowY
SizesExtra LargeY
SizesLargeY
SizesMediumY
SizesSmallY
FlavorsBlueberryN
FlavorsCaramelN
FlavorsChocolateY
FlavorsCoconutN
FlavorsLimeN
FlavorsOrangeY
FlavorsPeachY
FlavorsPecanN
FlavorsPineappleN
FlavorsStrawberryY
FlavorsVanillaY
FlavorsWatermelonN

可行的C1单元格数组公式

={"是否存在?"; ARRAYFORMULA(BYROW(A2:A, B2:B, LAMBDA(category, value, IF(category="","", IFERROR(IF(MATCH(value, INDEX(D:F,, MATCH(category, D1:F1, 0)), 0), "Y"), "N")))))}

问题原因说明

原数组公式失效的核心问题:MATCH($A2:$A,$D$1:$F$1,0)返回的是一个数组,但INDEX($D$1:$F,, 数组)无法按行对应返回不同列,只会取数组第一个元素对应的列,导致所有行都匹配同一列数据,结果错误。

使用BYROW逐行处理每一对(类别,值),让INDEX每次都获取当前行类别对应的正确列,再用MATCH判断值是否存在,即可实现需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:45:33