Bec*_*kie 4 excel excel-formula
我试图在数组中找到一个值,然后返回相应列中特定行的值.
在下面的例子中,我需要知道雪佛兰所在的海湾:
Column A Column C Column D Column E
Chevrolet Bay 1 Bay 2 Bay 3
Toyota Ford Saturn
Honda Chevrolet Jaguar
Ferrari Subaru Lexus
Mitsubishi Hundai BMW
Run Code Online (Sandbox Code Playgroud)
我正在寻找阵列C2:E5中的雪佛兰.一旦确定雪佛兰在D列中,我需要它返回D1中的值.如果它在E列中,我需要它返回E1中的值.
任何帮助将不胜感激.非常感谢你提前.
试试这个数组公式:
=INDEX($C$1:$E$5,1,SMALL(IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99),1))
或者如果您确定每列都包含正在搜索的内容,则可以这样写:
=INDEX($C$1:$E$5,1,SMALL(IF($C$1:$E$5=A1,COLUMN($A:$C),99^99),1))
按Ctrl+ Shitf+ 在任何单元格中输入公式Enter.
它是如何工作的?
我们的最终目标是找到包含匹配项的列:
SEARCH(A1,$C$1:$E$5)
.它只检查是否有任何条目与A1匹配.实际上,它可以简化为$C$1:$E$5=A1
但我不确定每列中的所有条目是否与A1中的完全匹配.{SEARCH(A1,C1), SEARCH(A1,D1), SEARCH(A1,E1);... SEARCH(A1,E5)}
.结果将是数字和错误的数组(如果找不到).但是我们不希望这样,否则我们每次都会返回错误.IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99)
.如果存在匹配,则此公式返回列号,否则返回相对较大的数字99^99
.结果将是:{99^99, 99^99, 99^99, 2, ..., 99^99}
.SMALL
用来返回最小的数字,我认为这是找到匹配项的最低列号.所以SMALL(IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99),1)
会返回2. 雪佛兰以$ C $ 1引用的列:$ E $ 1.INDEX($C$1:$E$5,1,2)
.注意: 99^99
可以是任何比较大的数字.不一定99^99
.可以使用实际16385(Excel 2007中的最大列数和上升+ 1).
结果:
归档时间: |
|
查看次数: |
65136 次 |
最近记录: |