在Excel中排序行?

时间:2013-07-25 17:05:20

标签: excel sorting excel-vba pivot-table vba

我有一个excel电子表格的问题我想看看我是否可以不使用VBA,因为它似乎更容易实现。基本上,我想要排序的工作表中有很多列。但是,我只想查看三列:标题列,数据列和状态列。

在新的电子表格中,将有四个部分。每个部分对应一年中的3个月(即1月,2月,3月将映射到新电子表格的第一列,4月,5月,6月将映射到新电子表格的第2列)。

根据日期,如果状态列中包含单词“已完成”(在原始电子表格中),我想根据前面所述的日期条件将标题映射到新电子表格下的某个列段。例如,如果原始电子表格有以下内容:

Title Date Status

Doc1 1/12/13 Finished
Doc2 2/10/13 UnFinished
Doc3 4/1/13  Finished
Doc4 3/31/13 Finished

将映射到新电子表格:

1st Column | 2nd Column
Doc1         Doc3 
Doc4

我已经看了很多数据透视表,但我不能像我想的那样“自动化”。我已经把它归结为我可以根据日期将数据透视表更改为过滤,但我希望它比这更自动化。我也尝试过excel公式,但这无济于事。感谢您的帮助,我真的很感激!

2 个答案:

答案 0 :(得分:0)

使用数据透视表看起来相当容易“自动化”到工作表2,如下所示:

SO17864374 example

但从那里到所要求的结果是相对'手动'没有VBA,所以可能不适合。

为方便起见,我更改了日期格式。数据透视表按常规/指示构造,不显示行或列的总计(数据透视表选项,总计和过滤器)。列标签为Date,具有按季度分组,适当的起始位置为:和结束于:(组)和折叠整个字段(展开/折叠)。

I6中的公式是将文档计数(始终为1)转换为文档名称:

  

= IF(F6 = 1,$ E6,“”)

但是,为了在数据透视表中留出额外四分之一的空间,公式应该向右移动。必要时,需要根据需要复制公式。

该过程变得更加“手动”,复制这些公式的结果,将它们(使用特殊值/值)粘贴到新位置(在示例2!A1中),如果需要,删除空白。

答案 1 :(得分:0)

这可能违反了维护OP请求完整性的规则,但希望它不会冒犯:)

这是另一种选择。

  1. 在原始数据中添加另一列(我知道,我感到羞耻) 称这个季度。旁边现有数据的公式 如下。

    =IF(C2="Finished",IF(MONTH(B2)<=3,"Q1",IF(MONTH(B2)<=6,
        "Q2",IF(MONTH(B2)<=9,"Q3","Q4"))),C2)
    

    基本上,如果状态为“已完成”,则确定日期在哪个季度。

  2. 使用该数据创建数据透视表,然后添加“Quarter”和 行标签的“标题”(按此顺序)

  3. 最后一件事就是点击“行标签”旁边的箭头,然后选择“标签过滤器”下的“不等于”。在那里你将输入“未完成”(没有引号)。这将为您提供如下图所示的内容。

  4. Another option using a formula and PivotTables

    从这里开始,您需要做的唯一手动是,如果更多行添加到数据透视表数据,则更新数据透视表的数据范围;如果原始数据更改,则刷新数据透视表

    注意:解决有关排序的问题;执行上述步骤后,您可以再次选择行标签并执行A&gt; Z排序,以便按字母顺序对每个季度进行排序