MATCH()在Excel中的多个值之一?

我有100多张财务数据,我正在创build一个主表,所有的公司数据在一张综合表。 我拥有几乎所有的东西,但问题在于,公司有时会列出每股收益(可能是每股总收益,每ADR总收入,每股净收入等)。

事情是,因为这些都没有列在一起,每张纸将永远只有从列表中的一个。

有没有办法使用MATCH函数的值列表,如果其中一个存在于指定的数组,给我那个行号?

例如:

可以说sheet1的值为“Net Operating Revenues per share”,我想使用匹配函数而不必查看和指定。 相反,我只想列出一些值,如果MATCH发现其中一个,给我那一行?

一种select是简单地将多个MATCH语句连同您想要testing的不同string。 返回第一个不返回错误的值( #N/A )。

例如:

 =IFERROR(MATCH("Total Sales Per Share", FinancialData!A1:A100,0), MATCH("Total Sales Per ADR", FinancialData!A1:A100,0)) 

如果你愿意使用数组,下面的代码也可以工作,但仍然相当冗长。 请注意,工作表LookupTerms将包含查找条件数组, FinancialData将包含您在其中search条件的数组:

 {=MIN(IFERROR(Match(LookupTerms!A1:A10, FinancialData!A1:A100, 0), ""))} 

另一个select是在你的答案中使用VBA。 下面的代码将允许您指定一系列的查找术语和查找数组。 它将查找在查找数组中find的第一项的查找条件,并返回该匹配的索引。

 Function MatchMultiple(lookup_terms As Range, lookup_array As Range) As Double Dim result As Variant Dim lookup_term As Range For Each lookup_term In lookup_terms.Cells If Not IsEmpty(lookup_term.Value) Then result = WorksheetFunction.Match(lookup_term, lookup_array, 0) If Not IsError(result) Then MatchMultiple = result Exit Function End If End If Next MatchMultiple = CVErr(xlErrNA) End Function 

将此函数添加到模块,然后按如下所示调用它:

 =MatchMultiple(LookupTerms!A1:A10, FinancialData!A1:A100)