如何将一片表格按时间分段后横向扩展成多片

Excel数据原有一片数据,记录着不同人的工作状态和时段:

 ABCDE
1     
2     
3NameStartEndActivityElapsed hrs
4Krishna08:0011:15Production03:15
5Ranjith07:0010:10Noload03:10
6Krishna07:1008:25Break01:15
7Ranjith07:3012:30Idle05:00
8Krishna07:0008:10Production01:10
9Ranjith11:5514:55Production03:00

计算目标:从G列开始,将该片数据从07:00-15:00每小时扩展出一片(共8片),分别计算出各种状态"Production","Idle","Noload","Tech","Break"(共5种)所耗的小时分钟数。其中前2个片区如下:

 HIJKLMNOP 
07:00-08:0008:00-09:00 
 
ProductionIdleNoloadTechBreakProductionIdleNoloadTechBreak 
     1:00     
  1:00    1:00   
    0:50    0:25 
 0:30    1:00    
1:00    0:10     
           

一行扩展多行已经有些难度了,Excel公式或power query只能勉强实现,这里难度再次提升,要求一片扩展成多片,导致以前的方法彻底不灵,有必要彻底换个新思路。

实现步骤:

1.      运行集算器(可以到润乾官网下载,用职场版,首次运行时会提示加载授权,下载个免费的就够了)

2.  用 Excel 打开要计算的文件,选中 A3:E9 区域,按 ctrl+C 复制到剪贴板。

3.  切换到集算器,选中 A1 格,注意要让光标落到 A1 的编辑状态中,用 ctrl+V,将数据粘贴进来。

imagepng

4.  在集算器中继续编写脚本:

 ABCD
1…(复制来的数据)   
2=A1.import@t()   
3=create(${(["Production","Idle","Noload","Tech","Break"]*8).string()})/create   table with 5*8 cols
4for   A2for   8 /loop   records, loop 8 hours
5  =max(elapse@s("07:00",3600*(B4-1)),A4.Start)/actual   start
6  =min(elapse@s("07:00",3600*B4),A4.End)/   actual end
7  =if(C5<C6,interval@s(C5,C6),0)/   actual seconds
8  =if(C7!=0,time(C7\3600,(C7%3600)\60,0))/seconds   to HH:mm
9  =[null]*5/5   blank cols
10  =C9(["Production","Idle","Noload","Tech","Break"].pos(A4.Activity))=C8/put   HH:mm to the correct position
11  =@|C9/append   up to 40 cols
12 =A3.record(C11) /insert   one record
13 =C11=null /reset

脚本函数 elapse 可计算流逝一段时间后的新时间,@s 表示流逝时间的单位是秒;函数 interval 表示 2 个时间点的间隔,@s 表示间隔的单位是秒;符号 \ 和 % 分别代表除法的商和余数。

5.  按 F9 执行,点击 A3 格,在右侧可以看到执行结果。按下 shift(以便复制列名),点击 "copy data" 按钮,将 A3 的计算结果复制到剪贴板。

112png

6.  返回 Excel 选中 G3 格,用 ctrl+V 粘贴,即可完成计算。最后,手工补写前两行的时间段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值