在行中搜索两个条目并返回成功结果(调整现有代码)

时间:2015-09-25 14:31:47

标签: excel excel-vba vba

我目前在Excel中使用此代码通过数组查找并返回搜索结果,但我需要根据两个标准而不是一个来调整它以进行搜索,并希望有一些帮助调整代码来做这一点。

这是我拥有的......

=IF(ISERROR(INDEX($B$1:$F$154,SMALL(IF($B$1:$B$154="Good",ROW($B$1:$B$154)),ROW(1:1)),5)),"",INDEX($B$1:$F$154,SMALL(IF($B$1:$B$154="Good",ROW($B$1:$B$154)),ROW(1:1)),5))

它目前搜索B1:B154以查找条目" Good"如果成功,则返回F列中相应单元格的内容。

我想要做的是在A栏和B栏中搜索另一个词。换句话说,执行两次搜索。如果根据这两个标准找到成功的条目,则按上述方式返回F列中单元格的内容。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

要为搜索替换添加第二个条件,请执行以下操作:

=IF($B$1:$B$154="Good",ROW($B$1:$B$154)) 

使用

=IF(($B$1:$B$154="Good")*($A$1:$A$154="Condition2"),ROW($B$1:$B$154))

这部分:

($B$1:$B$154="Good")*($A$1:$A$154="Condition2")

相当于:

AND($B$1:$B$154="Good",$A$1:$A$154="Condition2")

但是AND在数组公式中通常不能很好地工作(它会返回单个值)。
另一种选择是使用嵌套的IF语句。

如果您使用的是Excel 2007或更高版本,则还可以简化公式而不是

IF(ISERROR(INDEX(...),"",INDEX(...)))

使用:

IFERROR(INDEX(...),"")

答案 1 :(得分:1)

使用较新的AGGREGATE¹ function可以更轻松地根据渐进式(第一,第二,第三等匹配)结果进行两项标准匹配。

Multiple criteria, multiple returns with AGGREGATE

E4中的标准公式是,

=IFERROR(INDEX(C$1:C$999, AGGREGATE(15, 6, ROW($1:$999)/((A$1:A$999="Bad")*(B$1:B$999="Good")), ROW(1:1))), "")

根据需要填写。

¹ Excel 2010引入了AGGREGATE function。早期版本不提供。