Excel-仅当当前行中的多个条件匹配时才返回行中的单元格

Excel-仅当当前行中的多个条件匹配时才返回行中的单元格,excel,excel-formula,Excel,Excel Formula,我有一个具有唯一ID的交易电子表格 对于每个事务,可能有两行对应——一行启动,一行完成 随着新信息不断流入,如果当前行是一行,我希望找到起始行。由于它们将具有不同的ID,因此匹配它们的唯一方法是按金额、类型、帐号和交易日期 每个标准都不是唯一的。例如,可能有许多金额为500美元的交易 因此,我想编写一个公式,当且仅当所有这些条件都匹配电子表格中的一行时,才返回事务ID 我尝试使用数组,认为我可以将它们相乘,因为它们将是0或1,如果所有条件都匹配,则乘积将仅为1,但无法使其工作,因为它只返回一个值

我有一个具有唯一ID的交易电子表格

对于每个事务,可能有两行对应——一行启动,一行完成

随着新信息不断流入,如果当前行是一行,我希望找到起始行。由于它们将具有不同的ID,因此匹配它们的唯一方法是按金额、类型、帐号和交易日期

每个标准都不是唯一的。例如,可能有许多金额为500美元的交易

因此,我想编写一个公式,当且仅当所有这些条件都匹配电子表格中的一行时,才返回事务ID

我尝试使用数组,认为我可以将它们相乘,因为它们将是0或1,如果所有条件都匹配,则乘积将仅为1,但无法使其工作,因为它只返回一个值,而不是一个值数组

因此,电子表格具有以下结构:

ID | Account Number | Transaction Date | Amount | Customer | Fulfilling order ID?    |
1 |     123456      |     06/26/2018   |   50   |   John   |                         |
2 |     123457      |     07/25/2018   |   55   |   Steve  |                         |
3 |     123456      |     06/26/2019   |   50   |   John   |         1               |
4 |     124588      |     07/25/2019   |   75   |   Rich   |                         |
5 |     125589      |     08/01/2019   |   80   |   Vincent|                         |

我希望能够在订单ID 3上写入返回1的内容,因为它满足订单ID 1。

您当然可以在数组公式中使用动态范围,因此在输入数据时不必手动更改范围

单元格中的某物
F2
大致如下:

=INDEX(A:A,MATCH(1,($B$1:INDEX(B:B,COUNTA(B:B))=B2)*($C$1:INDEX(C:C,COUNTA(C:C))=C2)*($D$1:INDEX(D:D,COUNTA(D:D))=D2)*($E$1:INDEX(E:E,COUNTA(E:E))=E2),0))
通过CtrlShiftEnter以数组形式输入,是否无效

注意 在您的示例中,它永远不会返回
1
,而只返回
3
,因为条件不匹配(c列,日期不同)。只要它们是一样的,这个公式就起作用了


您当然可以在数组公式中使用动态范围,因此在输入数据时不必手动更改范围

单元格中的某物
F2
大致如下:

=INDEX(A:A,MATCH(1,($B$1:INDEX(B:B,COUNTA(B:B))=B2)*($C$1:INDEX(C:C,COUNTA(C:C))=C2)*($D$1:INDEX(D:D,COUNTA(D:D))=D2)*($E$1:INDEX(E:E,COUNTA(E:E))=E2),0))
通过CtrlShiftEnter以数组形式输入,是否无效

注意 在您的示例中,它永远不会返回
1
,而只返回
3
,因为条件不匹配(c列,日期不同)。只要它们是一样的,这个公式就起作用了


请向我们展示一组数据样本和您尝试的公式。什么有效,什么无效?A会很有帮助(以及需要什么)。所以您尝试了一些类似于
=INDEX(A:A,MATCH(1;(Range1=Criteria1)*(Range2=Criteria2)*(Range2=Criteria2)*(Range3=Criteria3);0)的方法。
通过CTRL+SHIFT+ENTER以数组的形式输入???@JvdV我尝试过,但我注意到随着新数据的到来,很难扩展行,因为不可能“修改”此外,在公式中,我无法指定它是哪个“条件”,因为在我按下Ctrl+Shift+Enter键后,我键入的任何内容——当前行的条件——都将用于整个数组。请向我们展示一组数据样本,以及您尝试的公式。什么有效,什么无效?A会很有帮助(以及需要什么)。所以您尝试了一些类似于
=INDEX(A:A,MATCH(1;(Range1=Criteria1)*(Range2=Criteria2)*(Range2=Criteria2)*(Range3=Criteria3);0)的方法。
通过CTRL+SHIFT+ENTER以数组的形式输入???@JvdV我尝试过,但我注意到随着新数据的到来,很难扩展行,因为不可能“修改”数组的一部分,更进一步说,在公式中,我无法指定它是哪个“条件”,因为在我按Ctrl+Shift+Enter之后,我键入的任何内容——当前行的条件——都将用于整个数组。太棒了!当我有机会的时候,我会尽快尝试这个公式,让你知道它是怎么回事,然后接受答案。
匹配中的
1
是什么(1
?它只是一个占位符吗?它是表示查找值的匹配语法中的第一个参数。它必须是1,因为我们正在查找所有参数的第一个正匹配。将所有这些参数乘以evaluate,您会注意到它将返回一个0和1的数组。我们的函数将返回第一个参数的索引w我在那个数组中。谢谢你的帮助。我现在理解了逻辑。我会回家看看它为什么还不起作用(我一定是在这里和那里犯了一些错误)。@user101998,你已经将它作为矩阵输入(所有单元格中的公式都完全相同)。复制
F2
中的公式,清除所有公式,将公式粘贴回
F2
,通过ctrl+shift+enter键输入,然后向下拖动公式。关键是,由于单元格相对,您向下拖动了公式。现在,您不断地反复比较第二行。实际拖动表单后,请检查差异太棒了!当我有机会的时候,我会尽快尝试这个公式,让你知道它是怎么回事,然后接受答案。
匹配中的
1
是什么(1
?它只是一个占位符吗?它是表示查找值的匹配语法中的第一个参数。它必须是1,因为我们正在查找所有参数的第一个正匹配。将所有这些参数乘以evaluate,您会注意到它将返回一个0和1的数组。我们的函数将返回第一个参数的索引w我在那个数组中。谢谢你的帮助。我现在理解了逻辑。我会回家看看它为什么还不起作用(我一定是在这里和那里犯了一些错误)。@user101998,你已经将它作为矩阵输入(所有单元格中的公式都完全相同)。复制
F2
中的公式,清除所有公式,将公式粘贴回
F2
,通过ctrl+shift+enter键输入,然后向下拖动公式。关键是,由于单元格相对,您向下拖动了公式。现在,您不断地反复比较第二行。实际拖动表单后,请检查差异(下)