【问题标题】:Excel - Two columns (A)Company (B)Team Members. Need to identify which Companies do not have Team Members a,c and cExcel - 两列 (A) 公司 (B) 团队成员。需要确定哪些公司没有团队成员 a、c 和 c
【发布时间】:2017-05-05 16:55:15
【问题描述】:

这让我的大脑融化了。

这与我想要实现的目标类似。

我从 Excel 中的数据库中提取数据。 A 列是公司。 B 列是团队成员。

Is 的结构是这样的,例如,公司 a 显示了四次,因为它有四个团队成员,成员 a、c、f 和 d。

目标:我想找出所有不包含团队成员 a、b 和 c 的公司。理想情况下,这将使用公式而不是 VBA。

真的希望有人不介意花时间提供帮助。

下面的示例数据,我不知道如何将其粘贴为表格,因此我将列值粘贴为两个单独的字符串。

+----------+----------+
| Column A | Column B |
+----------+----------+
| a        | a        |
| a        | c        |
| a        | f        |
| a        | d        |
| b        | g        |
| b        | e        |
| b        | a        |
| b        | c        |
| c        | r        |
| c        | a        |
| c        | b        |
| c        | d        |
| c        | e        |
| c        | h        |
| c        | t        |
| d        | e        |
| d        | f        |
| d        | d        |
| d        | s        |
| d        | w        |
| d        | q        |
| e        | f        |
| e        | a        |
| e        | b        |
| e        | r        |
| e        | w        |
| f        | u        |
| f        | k        |
| f        | n        |
| f        | p        |
| f        | l        |
| g        | h        |
| g        | a        |
| g        | c        |
| g        | e        |
| g        | r        |
| g        | g        |
| h        | v        |
| h        | c        |
| h        | d        |
| h        | a        |
| h        | e        |
| h        | r        |
| h        | t        |
| h        | g        |
| i        | n        |
| i        | g        |
| i        | e        |
| i        | y        |
| i        | n        |
| j        | r        |
| j        | w        |
| j        | j        |
| j        | u        |
| k        | y        |
| k        | h        |
| k        | k        |
| k        | u        |
| k        | b        |
| l        | g        |
| l        | j        |
| l        | l        |
| l        | u        |
+----------+----------+

非常感谢,

马特。

【问题讨论】:

  • 你想如何显示“不包含团队成员a、b和c的公司”???

标签: excel excel-formula


【解决方案1】:

Column C 中的一个简单的IF 公式,

=IF(AND(B1<>"a",B1<>"b",B1<>"c"),A1,"")

并在整个范围内拖动它。这将显示所有没有团队成员 a、b 和 c 的公司。这可能包含重复的公司名称,您可能需要单独删除它。

【讨论】:

    【解决方案2】:

    给你。将此公式复制到包含公司和团队数据的每一行的 C 列中。

    =IF(INDIRECT("A"&ROW())<>INDIRECT("A"&ROW()-1),IF(SUM(COUNTIF(INDIRECT("B" & ROW() & ":B" &   ROW() + COUNTIF($A:$A, INDIRECT("A"&ROW())) - 1), {"a","b","c"})) > 0, "", CONCATENATE("Company ",  INDIRECT("A"&ROW()), " does not contain Team Members a, b, or c")), "")
    

    这里是这个公式的作用的细分。

    首先让我们了解INDIRECT 的用法。这是基于列的硬编码“A”或“B”构建对正确单元格的引用,然后使用ROW() 查找当前行号。这使您可以将公式放在行中的任何位置,而不必担心必须重做列引用。

    因此,例如,如果对第 6 行进行评估,则拼出的公式如下:

    1. IF(INDIRECT("A"&amp;ROW())&lt;&gt;INDIRECT("A"&amp;ROW()-1)
      • 如果 A6 不等于 A5 则继续,否则显示空白。
        • (这就是我们知道我们是否正在评估一家新公司的方式)
    2. COUNTIF($A:$A, INDIRECT("A"&amp;ROW()))
      • 计算 A 列中等于 A6 的单元格数。
    3. (COUNTIF(INDIRECT("B" &amp; ROW() &amp; ":B" &amp; ROW() + ... - 1), {"a","b","c"})
      • 计算“a”、“b”或“c”在 A6 到 A9 范围内出现的次数。
    4. IF(SUM( ... ) &gt; 0, "", ...
      • 如果上述计数的总和大于零,则显示空白,否则显示我们的成功消息。
    5. CONCATENATE("Company ", INDIRECT("A"&amp;ROW()), " does not contain Teams a, b, or c")
      • 使用INDIRECT 构建我们的成功消息以获取对公司名称的引用。

    输出如下所示。

    就是这样!

    【讨论】:

    • 啊,谢谢。我误解了这个问题对于团队成员的意思是“或”而不是“和”。我不知道要避免INDIRECT。我很想了解更多。
    • 重读帖子不是很详细,do not contain team members a,b and c对我来说意味着三个人都必须在公司才算不算,我可能错了。查找 volatile 函数。每次 excel reclalcs 时都会重新计算 volatile 函数。非易失性函数仅在基础数据更改时重新计算。它迫使excel做很多不需要的计算。即使计算由不同的工作簿调用,可变函数也会重新计算。
    • 你的公式没有间接。放入 C2 并复制/向下拖动:=IF(A2&lt;&gt;A1,IF(SUM(COUNTIF($B2:INDEX(B:B,ROW() + COUNTIF($A:$A, A2) - 1), {"a","b","c"})) &lt;&gt;0, "", CONCATENATE("Company ", A2, " does not contain Team Members a, b, or c")), "")
    • 感谢您的信息!
    【解决方案3】:

    这是一个数组公式,这将做 AND,所有三个都必须存在才能忽略:

    =IFERROR(INDEX($A$2:$A$64,MATCH(1,(COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"a")*COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"b")*COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"c")=0)*(COUNTIF($E$1:E1,$A$2:$A$64)=0),0)),"")
    

    把它放在 E2 中,按 Ctrl-Shift-Enter 而不是 Enter 来确认它是一个数组公式。如果操作正确,Excel 会在公式周围加上{}

    然后向下拖动/复制。


    如果你想要或者,如果有的话忽略:

    =IFERROR(INDEX($A$2:$A$64,MATCH(1,(COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"a")+COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"b")+COUNTIFS($A$2:$A$64,$A$2:$A$64,$B$2:$B$64,"c")=0)*(COUNTIF($E$1:E1,$A$2:$A$64)=0),0)),"")
    

    把它放在 E2 中,按 Ctrl-Shift-Enter 而不是 Enter 来确认它是一个数组公式。如果操作正确,Excel 会在公式周围加上{}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-11
      • 2020-06-09
      • 1970-01-01
      相关资源
      最近更新 更多