我有一个Excel工作簿,其中包含一个工作表上的联系信息和另一个工作表上的表单。我想创建另一个工作表,其中包含一组已过滤的联系人FULLNAME,以显示在表单工作表的列表中。我使用带有FULLNAME的数据透视表,但我无法在没有对项目进行分组的情况下在LASTNAME上添加排序,这不是我想要的。任何不包含数据重复的建议
更新:
所以我通过这种方法按照我想要的方式部分工作。下图是基于工作表中的表格的枢轴表。您可以看到名称按名字排序。我希望他们按姓氏排序
因此,当我将姓氏添加到Piviot表中时,我可以按姓氏排序,当然它会将数据分组,这是预期的。
在我的表单列表中给出了这个结果
正如您所见,“姓氏分组”条目也会显示在列表中,这是不可取的。
更新: 使用下面的安德烈斯解决方案和其他一些修改,我能够完成这个问题。我发布了一个完整的解决方案,因为我知道其他人需要它。
因此,在下图中使用Andreas解决方案,它为我提供了数据透视表右侧的第一组数据。正如您所看到的那样,它具有空格,并且将该表与列表难看地绑定在一起。因此,使用以下宏函数,我能够创建没有空格的第3列数据。功能如下......
=IFERROR(INDEX(SortedSpacedRange,SMALL((IF(LEN(SortedSpacedRange),ROW(INDIRECT("1:"&ROWS(SortedSpacedRange))))),ROW(A1)),1),"")
我没有在函数中使用范围数据,而是在名为“SortedSpacedRange”的第二列数据中创建了一个表。这使我可以更好地在多张纸上使用它。不要忘记使用Ctrl + Shift + Enter来插入函数。
正如你在下面看到的,我现在有一个姓氏排序列表,除了我有意放置在未空格表的第一行之外没有空格。
我希望有人觉得这很有用。再次感谢Andreas
答案 0 :(得分:1)
现在我知道你需要什么了
就在几天前,我问过如何从数据透视表中对项目进行整理:
https://stackoverflow.com/questions/39383971/how-can-i-detect-pivot-table-new-items
您需要的是:
Function IsItem(c)
If c.IndentLevel <> 0 Then ' I think this will work, not tested. Typing on my phone
IsItem = True
Else
IsItem = False
End If
End Function
如果数据透视表中的项目是新项目或“总和”,则返回true / false。
因此,在数据透视表旁边的新列中,使用以下公式:
编辑:显然不是A1枢轴表开始,我的坏。只需用第一个单元替换单元。编辑结束。 编辑2:我现在看到A4是第一个。编辑结束2。=if(A4="","",if(IsItem(A4),A4,""))
它首先查看单元格,如果它为空,则返回空白 如果不为空,则查看该值,如果它是全名(不仅是姓氏),它将返回名称,否则为空。
现在,如果您填写此公式,您应该只有一个列表,其中包含您可以在表单列表中使用的全名。
vba代码应该放在一个模块中,在你在工作表上添加公式之前,需要将文件保存为宏激活的工作簿xlsm。