Excel数据验证从命名表中获取记录的唯一值

时间:2013-08-23 02:56:25

标签: excel excel-formula

我有一个名为Table5的Excel表,它包含两列CompanyCode和EmployeeLevel。现在我的问题是我想获得EmployeeLevel列的唯一值。请注意,记录的长度未知。我使用Table5 [EmployeeLevel]作为范围来包含Table5中的所有记录。你能提供一个公式吗?我无法使用ActiveX对象循环遍历每条记录。我必须通过Excel公式来做到这一点。我得到的解决方案只有在修复了记录的时间后才可用。但我正在研究的这个记录是一张动态表格。

提前致谢:)

2 个答案:

答案 0 :(得分:0)

假设您的数据如下:

Table5

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

enter image description here

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

enter image description here

当您向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 image description here

答案 1 :(得分:0)

如果EmployeeLevel已排序,您可以在表格内实现计数:

SO18393935 example