我希望一个单元格根据表中可能有的另一个单元格中的输入是否存在而自动显示文本(T1、T2、T3、T4)。
=IF(SUMPRODUCT(--(C3=standards!I3:I16))>0,"T1")
将仅列出一个类别,但是当值属于该类别时,我无法让公式接受多个数组和特定输入。
=IF(SUMPRODUCT(--(C3=standards!I3:I16))>0,"T1")*(--(C3=standards!J3:j16))>0,"T2")
等等。我做错了什么?
答案1
使用 AGGREGATE,它将搜索范围并根据在 CHOOSE() 函数中找到值的列返回一个数字:
=CHOOSE(AGGREGATE(15,6,(COLUMN($I$2:$L$16)-COLUMN($I$2)+1)/($I$2:$L$16=C3),1),"T1","T2","T3","T4")
答案2
您可以使用以下公式:
=IF(SUMPRODUCT(--(B253=A254:A257))>0,"T1",IF(SUMPRODUCT(--(B253=B254:B257))>0,"T2",IF(SUMPRODUCT(--(B253=C254:C257))>0,"T3",IF(SUMPRODUCT(--(B253=D254:D257))>0,"T4"))))
笔记:
- 根据需要调整数据范围和条件单元格引用。
- 对于条件单元格从 0 到 15 的任何值,公式将根据值所在的列返回 T1 到 T4。
- 如果条件单元格中的值大于 15,则
AGGREGATE()
公式将返回#Num!
错误,但此公式将给出FALSE
。
答案3
此SUMPRODUCT()
公式给出 C3 中的值所在的列号(数据表):
=SUMPRODUCT(1*(C3=standards!I3:L16)*COLUMN(A:D))
您可以在CHOOSE()
公式中使用它,就像 Scott 的回答一样,或者INDEX()
如果您的文本很长或者可能需要更改。
=CHOOSE(SUMPRODUCT(1*(C3=standards!I3:L16)*COLUMN(A:D)),"T1","T2","T3","T4")
=INDEX(Text_Table,SUMPRODUCT(1*(C3=standards!I3:L16)*COLUMN(A:D)))
请注意,SUMPRODUCT()
如果数据表中 C3 值多次出现,公式将给出错误答案。有办法解决这个问题,因此如果可能有多个值,请发表评论。
其他答案将识别第一次出现的情况,但它们将为所在的列提供正确的文本。