Excel 我如何判断是否有多个';IFS';条件为';正确';不仅仅是第一场比赛?

Excel 我如何判断是否有多个';IFS';条件为';正确';不仅仅是第一场比赛?,excel,excel-formula,Excel,Excel Formula,在Excel365中,我使用“IFS”语句扫描许多列,以确定单元格的值是否在任何列中。我相信“如果”将处理所有条件,直到它达到第一个“正确”的条件,然后输出。然而,我希望能够找到我的条件为真的所有实例,并以某种方式输出或评估它们。有没有一种方法可以通过IFS(或其他方法)实现这一点?我想我希望在单独的一行中输出每个真实条件的匹配值,但是任何可以帮助我查看每个匹配的匹配数量和/或列的内容都会有所帮助 我的代码有点多,因为我的专栏在其他工作簿中,所以我将只分享一个接近的示例。此公式将位于输出匹配项的

在Excel365中,我使用“IFS”语句扫描许多列,以确定单元格的值是否在任何列中。我相信“如果”将处理所有条件,直到它达到第一个“正确”的条件,然后输出。然而,我希望能够找到我的条件为真的所有实例,并以某种方式输出或评估它们。有没有一种方法可以通过IFS(或其他方法)实现这一点?我想我希望在单独的一行中输出每个真实条件的匹配值,但是任何可以帮助我查看每个匹配的匹配数量和/或列的内容都会有所帮助

我的代码有点多,因为我的专栏在其他工作簿中,所以我将只分享一个接近的示例。此公式将位于输出匹配项的单元格中,即下面的D列

  A  |  B   |  C   |    D    |  E
------------------------------------
ColA | Col1 | Col2 | Formula | Notes
------------------------------------
  1  |   1  |   2  |    1    | Two matches in same column (Col1)
  2  |   1  |   2  |    2    | Two matches in same column (Col2)
  3  |   3  |   3  |    3    | Two matches in diff column (Col1 & Col2)

=IFS(
NOT(ISERROR(MATCH(INDIRECT("A"&(ROW())),INDIRECT("B:B"),0))),
INDEX(INDIRECT("B:B"),MATCH(INDIRECT("A"&(ROW())),INDIRECT("B:B"),0)),
NOT(ISERROR(MATCH(INDIRECT("A"&(ROW())),INDIRECT("C:C"),0))),
INDEX(INDIRECT("C:C"),MATCH(INDIRECT("A"&(ROW())),INDIRECT("C:C"),0))
)
当然,预期的输出是转储第一个为true的条件的匹配值,但是如果可能的话,我希望在单独的行中输出该条件为true的所有实例。也许是这样的

  A  |  B   |  C   |    D    |  E
------------------------------------
ColA | Col1 | Col2 | Formula | Notes
------------------------------------
  1  |   1  |   2  |    1    | Two matches in same column (Col1)
 ... |  ... |  ... |    1    | Two matches in same column (Col1)
  2  |   1  |   2  |    2    | Two matches in same column (Col2)
 ... |  ... |  ... |    2    | Two matches in same column (Col2)
  3  |   3  |   3  |    3    | Two matches in diff column (Col1 & Col2)
 ... |  ... |  ... |    3    | Two matches in diff column (Col1 & Col2)
在上面和我的实际案例中,“…”将显示特定行匹配的列中的内容,在整个工作表中,这些内容可能因行而异。基本上,示例中的D列将位于单独的“结果”表上,其列数和列值类型与正在搜索的所有“数据”表相同。此外,“结果”表的每一列都是一个公式,扫描所有表中的一个特定列,但只输出匹配行的给定列值。像下面这样的

     DATA SHEET
  A   |   B   |   C   
----------------------
FName | LName | Amount 
----------------------
John  | Doe   |  10    
Jane  | Doe   |  4    
Jack  | Black |  10    

    RESULTS SHEET 
(all cells are formulas)
  A   |   B   |   C   
----------------------
FName | LName | Amount 
----------------------
John  | Doe   |  10   < matching value in C     
Jack  | Black |  10   < but different A & C
我制定的“结果”工作簿也有一个名为“源”的工作表,我用它粘贴文件名以连接所有数据表对应的列


顺便说一句,在获取所有表和列(使用SQL)并找到客户密钥后,我使用此工具在我们的实时站点/数据库中的配置文件之间“取消合并”客户数据,然后将其与我们的测试站点进行比较(使用Excel),以便我可以从实时合并中分离不属于“保留”记录的数据。在本例中,有3条记录合并。两个记录在测试现场有一个配置文件,而从现场保存的记录实际上没有测试记录,这给了我5张数据表来检查

假设您的数据从A2:C2范围开始

我觉得这个配方能帮你, 数组公式(使用Ctrl+Shift+Enter)


=索引($A2:$C2,匹配(“确定”,如果(ISNUMBER($A2:$C2),“确定”,“0))

不是答案,而是注释。如果可能的话,避免使用间接的。您使用的是间接符号来代替相对和绝对符号:
INDIRECT(“A”&(ROW())
应该是
$A2
,其中第2行是放置公式的第一行,当向下拖动时,2将变为3,依此类推
INDIRECT(“B:B”)
应该是
$B:$B
。间接法是不稳定的,即使数据不变,只要Excel重新计算,也会导致公式重新计算。我发现很难理解当时的情况以及您试图实现的目标。可能是对原始数据集中包含哪些信息的简要说明,以及您具体要查找哪些信息,以及为什么需要进行这样的匹配和查找?您可能正在查找
和()
或()
(例如,
=IF(和(…)
Scott,谢谢你,注意到。我添加了更多内容以帮助理解我的案例。顺便说一句,Terry,我在我的op中添加了更多内容,在“添加”下,希望它有所帮助……Sinaraheneba,我会研究你的建议,如果需要,会发回,谢谢。
=IFS(
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$3)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$3)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$3)&"F:F"),0)),
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$4)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$4)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$4)&"F:F"),0)),
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$12)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$12)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$12)&"F:F"),0)),
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$13)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$13)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$13)&"F:F"),0)),
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$14)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$14)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$14)&"F:F"),0)),
NOT(ISERROR(MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$2)&"F:F"),0))),
INDEX(INDIRECT((SOURCES!$B$2)&"A:A"),MATCH(INDIRECT((SOURCES!$B$2)&"F"&(ROW())),INDIRECT((SOURCES!$B$2)&"F:F"),0))
)