代码之家  ›  专栏  ›  技术社区  ›  Prospidnick

索引匹配组问题

  •  0
  • Prospidnick  · 技术社区  · 6 年前

    我有一系列数据,其中N列显示唯一的订单号值,F列包含一个操作。如果任何相关订单号的操作值与该组的任何其他订单号的操作值相同,我希望将其标记为、rejected、false、0等,以便我可以将其从数据集中删除。

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

    有人能告诉我如何做到这一点吗

    非常感谢 enter image description here

    3 回复  |  直到 6 年前
        1
  •  1
  •   Pavel_V    6 年前

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

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

    它将给出组合的出现次数,因此,如果值大于1,则只需过滤所有大于1的数字,或更改公式以给出拒绝、0、false或任何您喜欢的值。

        2
  •  0
  •   Chandrakant    6 年前

    在新列中,创建列F和列N的串联,例如,新列是R,然后在单元格Q1中输入值1,并从Q2开始粘贴此公式=IF(R1=R2,Q1+1,1) 拖动公式后,只能保留串联值的一个匹配项,并删除其他匹配项。 Snip from the Excel file

    2nd snip attached here

        3
  •  0
  •   EEM    6 年前

    要求:
    标记为 Delete 全部的 Order 数字重复 Action 价值
    假设数据位于行中 2 10105 (超过10000行)。

    解决方案数组公式:
    此数组公式将返回 (最终) 所需结果:

    = 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" ), "" )
    

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

    要在更小的范围内(仅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. 用重复的 行动 ,在中输入此公式 第2季度 然后将其复制到 Q3:Q10105 :

      =如果(COUNTIFS($2:$10105,$N2,$2:$10105,$F2)>1美元,N2,“”)

    enter image description here

    1. 标记为 删去 全部的 顺序 步骤1中标识的数字,请在中输入此公式 R2 然后将其复制到 R3:R10105 :

      =IFERROR(如果(匹配($N2,$Q$2:$Q$10105,0)>0,“删除”),“”)

    enter image description here