0

我有一个名为 Table5 的 Excel 表,它由两列 CompanyCode 和 EmployeeLevel 组成。现在我的问题是我想获得 EmployeeLevel 列的唯一值。请注意,记录的长度是未知的。我使用 Table5[EmployeeLevel] 作为包含 Table5 中所有记录的范围。有没有可以提供的公式?我不能使用 ActiveX 对象循环遍历每条记录。我必须通过 Excel 公式来完成。我得到的解决方案只有在确定记录的长度时才可用。但我正在处理的这个记录是一个动态表。

提前致谢 :)

4

2 回答 2

0

假设您的数据如下所示:

表5

最简单的方法是创建基于 Table5 的数据透视表。在行中,添加 EmployeeLevel。在数据中,添加 EmployeeLevel。

在此处输入图像描述

将数据聚合更改为Count而不是求和。你会得到这样的东西。

在此处输入图像描述

当您向 Table5 添加新项目时,您需要做的就是更新数据透视表(右键单击数据透视表并单击更新)。

如果您需要使用公式,以下是一种解决方法。

在 C 列中,添加以下公式(给定以下数据,调整以适应):

=--(COUNTIF($B$1:$B2,$B2)=1)

这将为表中的1每个唯一值返回一个。

在工作表的某处(在我的情况下为 F2),我添加了以下公式来计算唯一值:

=SUM(Table5[Unique Value])

在我的样本数据中,有 14 个。

然后我将以下公式从 F3 复制了 20 行(我使用 20 是因为我没有那么多唯一值——你说你的表是可变的,所以选择比你期望的唯一值数量高的行数未来):

{=IF(ROW(A1)<=F$2,SMALL(IF(Table5[Unique Value]=1,Table5[EmployeeLevel]),ROW(A1)),"")}

注意 -- 花括号是数组公式 -- 不要手动添加,输入没有它们的公式并用ctrl+ shift+确认enter

这将导致按升序排列的唯一值:

在此处输入图像描述

于 2013-08-23T04:15:24.723 回答
0

您可能能够从表本身中实现计数,前提EmployeeLevel是已排序:

SO18393935 示例

于 2013-08-23T05:16:39.503 回答