如何将一片表格按时间分段后横向扩展成多片
Excel数据原有一片数据,记录着不同人的工作状态和时段:
A | B | C | D | E | |
1 | |||||
2 | |||||
3 | Name | Start | End | Activity | Elapsed hrs |
4 | Krishna | 08:00 | 11:15 | Production | 03:15 |
5 | Ranjith | 07:00 | 10:10 | Noload | 03:10 |
6 | Krishna | 07:10 | 08:25 | Break | 01:15 |
7 | Ranjith | 07:30 | 12:30 | Idle | 05:00 |
8 | Krishna | 07:00 | 08:10 | Production | 01:10 |
9 | Ranjith | 11:55 | 14:55 | Production | 03:00 |
计算目标:从G列开始,将该片数据从07:00-15:00每小时扩展出一片(共8片),分别计算出各种状态"Production","Idle","Noload","Tech","Break"(共5种)所耗的小时分钟数。其中前2个片区如下:
G | H | I | J | K | L | M | N | O | P | |
07:00-08:00 | 08:00-09:00 | |||||||||
Production | Idle | Noload | Tech | Break | Production | Idle | Noload | Tech | Break | |
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,将数据粘贴进来。
4. 在集算器中继续编写脚本:
A | B | C | D | |
1 | …(复制来的数据) | |||
2 | =A1.import@t() | |||
3 | =create(${(["Production","Idle","Noload","Tech","Break"]*8).string()}) | /create table with 5*8 cols | ||
4 | for A2 | for 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 的计算结果复制到剪贴板。
6. 返回 Excel 选中 G3 格,用 ctrl+V 粘贴,即可完成计算。最后,手工补写前两行的时间段。
英文版