Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2301|回复: 0

[分享] 提取 Excel 重复单元格片区

[复制链接]
发表于 2021-3-24 10:43 | 显示全部楼层 |阅读模式
在Excel文件中,一条数据记录分布在一片区域中,我们称这个区域为片区。
重复单元格片区,就是文件中有很多个数据记录片区,每个片区的格式和大小完全相同,它们按规律重复出现。提取这种数据记录,需要找到片区重复出现的规律,按规律循环每个片区。在片区内部,要找到需提取数据在片区内的分布规律,准确计算出单元格名称或所在行列号,然后用SPL中的xlscell函数读取单元格值。

举例 员工信息表employee.xlsx中部分数据如下图所示,每个员工信息片区占9行7列,在纵向重复出现。

现在需要提取每个员工的ID,Name,Sex,Position,Birthday,Phone,Address,PostCode等信息构成数据集。
编写esProc SPL脚本:


A
B
C
1
=create(ID,Name,Sex,Position,Birthday,Phone,Address,PostCode)   
2
=file("E:/work/employee.xlsx").xlsopen()
3
[C,C,F,C,C,D,C,C][1,2,2,3,4,5,7,8]
4
for=A3.(~/B3(#)).(A2.xlscell(~))
5

if   B4(1)==""break
6

>A1.record(B4)
7

>B3=B3.(~+9)
A1   创建列名分别为ID、Name、Sex、Position、Birthday、Phone、Address、PostCode的序表来保存提取的数据
A2   打开employee.xlsx文件为Excel对象
A3   定义员工信息所在单元格列号序列
B3   定义员工信息所在单元格行号序列
A4   用for循环读取每个片区员工信息
B4   A3.(~/B3(#))先算出当前员工信息单元格位置序列,再读出这些单元格值组成员工信息序列。第一次循环时为[C1,C2,F2,C3,C4,D5,C7,C8],第二次循环时为[C10,C11,F11,C12,C13,D14,C16,C17]……,每次循环后行号加9。
B5   判断员工ID值是否为空,为空则退出循环,结束运行
B6   将一条员工信息追加到A1序表尾部
B7   让员工信息的行号序列都加上9,读取下一片区员工信息


您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-23 19:39 , Processed in 0.134017 second(s), 3 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表