Excel – 两列(A)公司(B)团队成员。 需要确定哪些公司没有团队成员a,c和c
这使我的大脑融化。
这是我想要实现的模拟。
我从Excel中的数据库提取数据。 A栏是公司。 B栏是团队成员。
结构是这样的,例如,公司a由于它有四个小组成员,成员a,c,f和d,所以被四次显示。
目标:我想确定所有不包含团队成员a,b和c的公司。 理想情况下,这将使用一个公式,而不是VBA。
真的希望有人不介意花时间来帮忙。
下面的示例数据,我不知道如何将其粘贴为表,所以我已经将列值粘贴为两个单独的string。
+----------+----------+ | 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 | +----------+----------+
非常感谢,
马特。
Column C
一个简单的IF
公式,
=IF(AND(B1<>"a",B1<>"b",B1<>"c"),A1,"")
并在整个范围内拖动它。 这将显示所有没有团队成员a,b和c的公司。 这可能包含重复的公司名称,您可能需要单独删除它。
干得好。 将该公式复制到包含公司和团队数据的每一行的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
的用法。 这是build立一个基于硬编码的“A”或“B”为列的正确单元格的引用,然后通过使用ROW()
find当前行号。 这允许您将公式放置在行的任何位置,而不用担心必须重做列引用。
因此,例如,如果对第6行进行评估,则说明的公式是这样的:
-
IF(INDIRECT("A"&ROW())<>INDIRECT("A"&ROW()-1)
- 如果A6不等于A5,则继续,否则显示空白。
- (这是我们如何知道我们是否正在评估一家新公司)
- 如果A6不等于A5,则继续,否则显示空白。
-
COUNTIF($A:$A, INDIRECT("A"&ROW()))
- 计算列A中等于A6的单元格数量。
-
(COUNTIF(INDIRECT("B" & ROW() & ":B" & ROW() + ... - 1), {"a","b","c"})
- 在A6到A9的范围内计算出现“a”,“b”或“c”的次数。
-
IF(SUM( ... ) > 0, "", ...
- 如果上述计数总和大于零,则显示空白,否则显示我们的成功消息。
-
CONCATENATE("Company ", INDIRECT("A"&ROW()), " does not contain Teams a, b, or c")
- 使用
INDIRECT
build立我们的成功信息来获取公司名称的参考。
- 使用
输出看起来像这样。
而已!
这是一个数组公式,这将做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将在公式周围放置{}
。