Excel:如何根据列表中的某一项创建组

Excel:如何根据列表中的某一项创建组

我的数据 A1:约翰。 B1:普通 A2:约翰。 B2:加班 A3:约翰。 B3:惩罚

如果 B1:B3 中的任何单元格中存在加班,那么我想将所有项目标记为加班。答案应该是:

C1:加班 C2:加班 C3:加班

如何在单元格C中写入公式?

谢谢

答案1

公式C1

=IF(COUNTIFS(A:A,A1,B:B,"overtime")>0,"overtime","")

在此处输入图片描述

答案2

您可以使用 来实现所需的结果VLOOKUP。我按照您在问题中提供的数据创建了一个示例数据:

在此处输入图片描述

现在,如果 B1:B3 范围内的任何数据对应于文本overtime,则需要将 C1:C3 中的所有相应结果显示为overtime。为此,我使用了VLOOKUP查找特定文本字符串并显示所需结果的公式,如下所示:

=IF(VLOOKUP($B$2,$B$1:$B$3,1,FALSE)="overtime","overtime","Not overtime")

在 C1 单元格中输入此公式并按回车键后,结果将显示为加班。将其向下拖动,所有单元格将显示相同的结果:

在此处输入图片描述

我希望这有帮助 :)

答案3

编辑:下面的 countifs 解决方案要简单得多,但我把它留在这里以防您需要做一些除了分组计数之外的其他事情。

假设您的数据如下:

john   ord
john   overtime
sally  ord
sally  penalty
jack   ord
jack   ord
jack   penalty

也就是说,各个小组的时间长短不一,而且并不总是有加班。

在本例中,我们将使用 INDEX(...):INDEX(...) 返回 B 列中在 A 中具有相同值的范围。让我们将 A 列中的数据定义为数据 1,将 B 列中的数据定义为数据 2。然后在 C2 中:

=IF(COUNTIF(grouprange,"overtime")>1,"overtime","")

其中 grouprange 是

=INDEX(data2,MATCH(A2,data1,0)):INDEX(data2,MATCH(A2,data1,0)+COUNTIF(data1,A2)-1)

如果您想更花哨一些,实际上可以将 grouprange 定义为 Excel 中的命名范围。将光标放在 C2 中,单击公式 > 定义名称,然后将上面的公式添加到“引用”文本框中。现在,grouprange 被称为动态命名范围(即根据其所在单元格的位置而变化的命名范围)。

相关内容