Excel 转置分组时如何保留没有对应数据的空组

例题描述

有商品日销售记录表sales.xlsx,有些日期没有销售记录,部分数据如下图所示:

1、需要以日期为左表头、产品为上表头做一个交叉统计表,且要同时列出没有销售数据的日期,如下图所示:

2、需要以周为左表头、产品为上表头做一个交叉统计表,且要同时列出没有销售数据的周,如下图所示:

实现步骤

1、  运行集算器

可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。

2、  编写脚本:

(1)按日期统计


A1定义保存文件的目录

A2读入sales.xlsx文件数据,选项@t表示首行是列标题

A3对A2的数据进行转置分组,按saledate分组为左表头,product列的值为上表头,amout为交叉统计值

A4求A3中的最小日期

A5求A3中的最大日期

A6把从最小日期到最大日期的所有日期按顺序组成一个序列

A7把A3转置分组的saledate按A6的顺序对齐

A8用new函数重新定义A7的每一行,#表示A7的当前行号,取A6中的同行号的日期值为saledate,再取A7当前行的bread、cookie、milk值

A9把A8中的结果保存到文件sales_day.xlsx中


(2)按周统计

编写代码如下:

A1定义保存文件的目录

A2读入sales.xlsx文件数据,选项@t表示首行是列标题

A3对A2的数据按saledate所在的周日进行转置分组并命名为Sunday,product列的值为上表头,本周各产品的amout之和为交叉统计值。pdate@w(saledate)表示求saledate所在周的周日。

A4求A3中的最小周日

A5求A3中的最大周日

A6把从最小周日到最大周日的所有周日按顺序组成一个序列

A7把A3转置分组的Sunday按A6的顺序对齐

A8用new函数重新定义A7的每一行,#表示A7的当前行号,取A6中的同行号的周日值按格式转成串再拼上它加6天后的周六值按格式转成串,命名为week,再取A7当前行的bread、cookie、milk值

A9把A8中的结果保存到文件sales_day.xlsx中


3、  按F9运行以上两段程序,运行结束后就可以在E:/pivot目录中看到生成的文件,其结果正如本文开头所示。

你可能感兴趣的:(Excel 转置分组时如何保留没有对应数据的空组)