【问题标题】:How to check for each unique value we have a same unique id in excel如何检查我们在excel中具有相同唯一ID的每个唯一值
【发布时间】:2018-02-17 16:03:50
【问题描述】:

我有一个 excel 表格,看起来像:

Col1    Col2
IJ-123  A2B1
IJ-123  A2B1
IJ-456  C2C2
IJ-456  c2c2
IJ-456  D1e2
IJ-789  LJ87
IJ-789  LJ98

我想再添加一列并检查(对于每个唯一的Col2 值)Col1 中的分配值是TRUE 还是FALSE

到目前为止,我已经尝试过这个:=IF(B2=B1,IF(A2=A1,"TRUE","FALSE")),它工作正常,但对于Col2 中的每一列新值,它都会给我“FALSE”结果。

输出:

Col1    Col2  Result
IJ-123  A2B1  TRUE
IJ-123  A2B1  TRUE
IJ-456  C2C2  TRUE
IJ-456  c2c2  TRUE
IJ-456  D1e2  FALSE
IJ-789  LJ87  TRUE (Because Col2 count=1 for this value)
IJ-789  LJ98  TRUE (Because Col2 count=1 for this value)

【问题讨论】:

  • “输出”是您期望看到的吗?或者你目前看到的?我很难理解你的逻辑
  • @CallumDA 期待看到...此行仅用于澄清目的:(Because Col2 count=1 for this value)
  • 那么为什么是 D1e2 FALSE
  • @CallumDA 因为IJ-456 被分配给C2C2,如果这里Col1 的值不是分配的值,那么D1e2 应该是TRUE
  • "对于每个 Col2 值 =1 或 。如果是这种情况,LJ87 和 LJ89 应该是False。我认为有一些缺失的逻辑

标签: r vba excel excel-formula


【解决方案1】:

我认为您的逻辑实际上非常复杂,并且在最初的问题中没有得到很好的解释 - 因此在 cmets 中进行了长时间的讨论。这是我现在理解的逻辑:

  1. 如果 col2 中的值超过 1,则检查这些 col2 值对应的 col1 值是否相同
  2. 如果只有一个 col2 值,则检查 col1 是否唯一但仅针对多次出现 col2 值的 col1 值

公式如下:

=IF(COUNTIF($B$2:$B$8,B2)=1,SUMPRODUCT(--(($A$2:$A$8=A2)*(COUNTIF($B$2:$B$8,$B$2:$B$8))>1))=0,COUNTIFS($B$2:$B$8,B2,$A$2:$A$8,"<>"&A2)=0)

根据需要返回以下内容:

【讨论】:

  • 这很好 - 很好地理解了需求:)
  • @CallumDA 它运行良好,但需要花费大量时间才能在 15 万行上运行。
  • @CallumDA 我们有什么方法可以快速运行它吗??
  • @Roy1245,不幸的是不是——这是一项昂贵的操作,因为每个单元都需要检查所有其他单元的唯一性。到底有多慢?您可以考虑使用 VBA 重新创建它,这可能会更快
  • @CallumDA Ohh....:(我不擅长 VBA 编码,但我认为 VBA 工作也会很慢。它的工作速度非常慢,在约 4 小时内只完成了 28% 的处理和我的系统挂了。
【解决方案2】:

您错过了“b2=b1”的错误。

这应该可以解决它:

=IF(B2=B1,IF(A2=A1,"TRUE","FALSE"),"FALSE")

为了简化,如果你可以使用 AND 函数,而不是双精度。

If(AND(B2=B1,A2=A1),"True","False")

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 1970-01-01
    • 2015-09-03
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多