0

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

4

2 回答 2

0

使用数据透视表,就如下表而言,“自动化”似乎相当容易2

SO17864374 示例

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

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

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

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

但是,为了在数据透视表中为其他季度留出空间,应将公式移至右侧。必要时需要上下复制公式。

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

于 2013-07-25T18:21:57.953 回答
0

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

这是另一种选择。

  1. 在原始数据中添加另一列(我知道,我很惭愧),并命名为 this Quarter。现有数据旁边的公式如下。

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

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

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

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

使用公式和数据透视表的另一个选项

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

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

于 2013-07-25T20:34:43.913 回答