使用多个字段和无分组的Excel数据透视表排序

时间:2016-09-17 02:31:31

标签: excel pivot-table excel-2016

我有一个Excel工作簿,其中包含一个工作表上的联系信息和另一个工作表上的表单。我想创建另一个工作表,其中包含一组已过滤的联系人FULLNAME,以显示在表单工作表的列表中。我使用带有FULLNAME的数据透视表,但我无法在没有对项目进行分组的情况下在LASTNAME上添加排序,这不是我想要的。任何不包含数据重复的建议

更新:

所以我通过这种方法按照我想要的方式部分工作。下图是基于工作表中的表格的枢轴表。您可以看到名称按名字排序。我希望他们按姓氏排序

enter image description here

因此,当我将姓氏添加到Piviot表中时,我可以按姓氏排序,当然它会将数据分组,这是预期的。

enter image description here

在我的表单列表中给出了这个结果

enter image description here

正如您所见,“姓氏分组”条目也会显示在列表中,这是不可取的。

更新: 使用下面的安德烈斯解决方案和其他一些修改,我能够完成这个问题。我发布了一个完整的解决方案,因为我知道其他人需要它。

因此,在下图中使用Andreas解决方案,它为我提供了数据透视表右侧的第一组数据。正如您所看到的那样,它具有空格,并且将该表与列表难看地绑定在一起。因此,使用以下宏函数,我能够创建没有空格的第3列数据。功能如下......

=IFERROR(INDEX(SortedSpacedRange,SMALL((IF(LEN(SortedSpacedRange),ROW(INDIRECT("1:"&ROWS(SortedSpacedRange))))),ROW(A1)),1),"")

我没有在函数中使用范围数据,而是在名为“SortedSpacedRange”的第二列数据中创建了一个表。这使我可以更好地在多张纸上使用它。不要忘记使用Ctrl + Shift + Enter来插入函数。

enter image description here

正如你在下面看到的,我现在有一个姓氏排序列表,除了我有意放置在未空格表的第一行之外没有空格。

enter image description here

我希望有人觉得这很有用。再次感谢Andreas

1 个答案:

答案 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。