指数匹配组问题

时间:2018-04-09 11:13:45

标签: excel excel-formula formula array-formulas

我有一系列数据,其中列N显示唯一的订单号值,列F包含一个Action。如果任何相关订单号的Action值与该组的任何其他订单号相同,我想将它们标记为,拒绝,false,0,以便我可以从数据集中删除它们。

在示例图形中,我在Q列中手动输入了True或False,但由于我有超过10,000行,我想我可能需要一个简单的公式。

有人可以建议如何实现这个

非常感谢 enter image description here

3 个答案:

答案 0 :(得分:0)

在新列中,创建列F和列N的连接,例如,新列是R然后在单元格Q1中将值1设置为从Q2开始粘贴此公式= IF(R1 = R2,Q1 + 1 ,1) 拖动公式后,您只能保留一次连接值并删除其他值。Snip from the Excel file

2nd snip attached here

答案 1 :(得分:0)

您可以使用以下公式检查具有相同操作和订单号组合的行数:

=COUNTIFS(N:N;N2;F:F;F2)

它将为您提供组合的出现次数,因此您只需要过滤所有大于1的数字或更改公式,以便在值大于1时给出被拒绝的,0,false或任何您喜欢的。

答案 2 :(得分:0)

要求:
标记为Delete,所有Order的数字都具有重复的Action值。
假设数据位于行210105(超过10,000行)中。

解决方案–数组公式:
该数组公式将最终返回 所需结果:

= IFERROR( IF( MATCH( $N28,
IF( COUNTIFS( $N$7:$N$10105, $N$7:$N$10105, $F$7:$F$10105, $F$7:$F$10105 ) > 1, $N$7:$N$10105 ),  0 ) > 0,
"Delete" ), "" )

不幸的是,多次指向10,000个单元格范围的数组公式的性能将非常慢。

要在较小的范围(仅24行)中测试数组公式,请在Q2中输入此版本的公式,然后将其复制到Q3:Q25

= IFERROR( IF( MATCH( $N2,
IF( COUNTIFS( $N$2:$N$25, $N$2:$N$25, $F$2:$F$25, $F$2:$F$25 ) > 1, $N$2:$N$25 ),  0 ) > 0,
"Delete" ), "" )

enter image description here

解决方案–标准公式:
另一种解决方案是使用两列来标记所需的记录:

  1. 要确定重复的Action的订单,请在Q2中输入以下公式,然后将其复制到Q3:Q10105

    = IF(COUNTIFS($ N $ 2:$ N $ 10105,$ N2,$ F $ 2:$ F $ 10105,$ F2)> 1,$ N2,“”)

enter image description here

  1. 要将步骤1中标识的所有Delete数字标记为Order,请在R2中输入此公式,然后将其复制到R3:R10105

    = IFERROR(IF(MATCH($ N2,$ Q $ 2:$ Q $ 10105,0)> 0,“删除”),“”)

enter image description here