【问题标题】:Sort Rows in Excel?在 Excel 中对行进行排序?
【发布时间】:2013-07-25 17:18:35
【问题描述】:

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

在新的电子表格中,将有四个部分。每个部分对应一年中的 3 个月(即一月、二月、三月将映射到新电子表格的第一列,四月、五月、六月将映射到新电子表格的第二列)。

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

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公式,但这无济于事。感谢您的帮助,我真的很感激!

【问题讨论】:

  • 这个数据透视表能满足您的需求吗?每个季度(一年中的 3 个月)都有一个组的数据透视表。当您展开该组时,您可以看到该季度的文档名称(例如,Doc1 和 Doc4 将出现在 Q1 下方)。
  • 我认为这个数据透视表绝对适合我的需求@Jaycal。数据透视表会在哪些列中自动为我排序哪些标题?我对 excel 还很陌生,所以你对如何做到这一点有任何想法吗?你能详细说明一下你的解释吗?

标签: sorting excel pivot-table vba


【解决方案1】:

使用数据透视表似乎很容易“自动化”至工作表2,如下所示:

但是从那里到请求的结果在没有 VBA 的情况下相对“手动”,所以可能不适合。

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

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

=IF(F6=1,$E6,"")

但是,为了在数据透视表中留出额外四分之一的空间,应将公式移到右侧。必要时需要上下复制公式。

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

【讨论】:

  • 当然,没关系。我也可以删除我的一些 cmets。我只是不明白为什么我的日期不会分组。当我右键单击将日期放入数据透视表的列标签区域后弹出的日期时,它显示“无法分组该选择”。
  • 我认为在我的文档中它们是字符串。例如,当我尝试编辑它们时,它仅显示为 2013 年 3 月 30 日,并且电子表格上显示的也是 2013 年 3 月 30 日。我应该尝试将它们更改为数字吗?
  • 好的,所以将日期从字符串更改为数字。当我完成这件事时,我会回应这个!感谢您的帮助!
  • 嘿,我真的把一切都搞定了!太感谢了!我现在只有一个问题——我想要它,这样当我刷新我的数据透视表时,我能够在表中看到新的和更多的项目。但是,当我在源数据中添加与 Qtr1 组中的任何日期都不对应的日期时,我的数据透视表只是为其创建了一个新列。例如,如果我想将 12/02/13 这样的日期放入 Q1,我不能,因为它在最初制作时不在 Qtr 1 的组中。有没有办法扩展 Qtr 1 的分组,使其包括所有指定月份的开始和结束?
【解决方案2】:

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

这是另一种选择。

  1. 在原始数据中添加另一列(我知道,我很惭愧),然后 称为这个季度。现有数据旁边的公式 如下。

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

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

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

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

从这里您需要做的唯一手动操作是在数据透视表数据中添加更多行时更新数据透视表的数据范围,如果原始数据发生更改则刷新数据透视表

注意:解决您关于排序的问题;完成上述步骤后,您可以再次选择行标签并进行 A>Z 排序以使每个季度按字母顺序排序

【讨论】:

  • 太棒了!谢谢你!如果上一个答案不起作用,我会试试这个。
猜你喜欢
  • 2012-10-19
  • 1970-01-01
  • 2012-02-07
  • 2021-08-12
  • 1970-01-01
  • 2016-11-21
  • 2015-09-11
  • 2021-11-06
  • 1970-01-01
相关资源
最近更新 更多