EXCEL VBA:从范围获取数据

时间:2014-07-07 14:47:27

标签: excel vba range

我的报告包含50万个数据单元格(从A到M)。

我需要总结一下这些数据。

示例FROM:

没有。日期行动时间

112256  07/Jul/2014 Done    1:00:00 AM  
112256  07/Jul/2014 Done    1:15:00 AM  
112256  07/Jul/2014 Done    1:18:00 AM  
112256  07/Jul/2014 Adjusted    1:35:00 AM  
112256  07/Jul/2014 Adjusted    1:39:00 AM  
112256  07/Jul/2014 Finished    1:57:00 AM  
112387  07/Jul/2014 Done    3:01:00 AM  
112387  07/Jul/2014 Adjusted    3:33:00 AM  
112387  07/Jul/2014 Adjusted    3:45:00 AM  
112387  07/Jul/2014 Finished    4:57:00 AM  

否:完成日期调整完毕

112256  07/Jul/2014 1:00:00 AM  1:39:00 AM  1:57:00 AM
112387  07/Jul/2014 3:01:00 AM  3:45:00 AM  4:57:00 AM

问题:

如你所见“不”。是提升,每一个“不”。可以有1到50个值(采取的行动)。 在sumarizing我只需要1“不。” (识别已经制作的部分),1“日期”(何时)和3个动作时间“第一次完成时,最后一次调整,以及 - 唯一 - 完成”

我抓住了这个,我在想如何用相同的“不”来选择范围。然后在该范围内搜索第一次完成,最后调整并完成,但我无法在一个范围内正常工作。我现在什么都没有,这只是一小部分,但我相信一个适当的开始是一种取得巨大成功的方法。 谢谢你的回答。

1 个答案:

答案 0 :(得分:0)

数据透视表就是答案,但您需要先添加辅助列。

假设您的上述数据位于A:D列中,请在E2中输入以下公式并向下复制(此方法的重新计算可能会非常慢)。我将Combined作为E1中的列标题。您可以根据需要重命名。

=IF($C2="Finished","Keep",IF(AND($C2="Done",$D2=MIN(IF(A:A=$A2,IF(C:C=$C2,D:D)))),"Keep",IF(AND($C2="Adjusted",$D2=MAX(IF(A:A=$A2,IF(C:C=$C2,D:D)))),"Keep","No")))

这是数组公式,因此您需要按CTRL + SHIFT + ENTER才能使其正常工作。

这样做会显示所有Finished个项目,所有前Done个项目以及每个Adjusted的所有最后No.个项目

然后创建一个数据透视表,并将以下项目放在数据透视表区域中:

  1. 报告过滤器:新Combined
  2. 列标签:Action
  3. 行标签:No.列,后跟Date
  4. 值:Time
  5. 现在格式化数据透视表。

    1. 在数据透视表的值区域中,将Value Field Settings更改为Sum
    2. 过滤Combined报告过滤器,仅包含Keep
    3. 的项目
    4. 在功能区的“数据透视表设计”选项卡中,选择“小计”和“Do Not Show Subtotals
    5. 在功能区的“数据透视表设计”选项卡中,选择Grand Totals和 Off for Rows and Columns
    6. 在功能区的“数据透视表设计”选项卡中,选择“报告布局”和“Show in Tabular Form
    7. 在功能区的“数据透视表设计”选项卡中,选择“报告布局”和“Repeat All Item Labels
    8. 您的最终结果应如下所示:

      enter image description here