![](https://img-blog.csdnimg.cn/20210607152146295.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Excel处理
文章平均质量分 54
关注Excel数据计算,将Excel数据处理难度降低一个数量级,让普通用户不需要VBA就可以处理复杂计算场景
润乾软件
创新技术 推动应用进步
润乾报表二十年
展开
-
文本分析,组间插入汇总值
在已经分组的数据间插入汇总值,通常的做法是依次读入本组数据,直到数据发生变化,然后将本组数据和汇总值追加到新文件中,再读入下一组数据。A2:每次从A1读取部分记录至第一列数据有变化(即先读取第一列为webcat_service的数据,再读取第一列为webroot_service的数据)。A1:读取逗号分隔的webdata.log中的内容,结果返回游标。B3:增加一行数据,并计算A2第2列的平均值。B4:将增加的行追加写入result.txt。A2-B4:循环读取A1第一列内容,并进行计算。原创 2022-09-29 10:13:07 · 210 阅读 · 0 评论 -
如何把多个列数不定的 Excel 合并成汇总表
有电镀检验报表.xlsx,当月每日的检验数据各存在一个sheet中,从F列开始是电镀缺陷类型,各sheet中的缺陷类型和列数不完全相同。11月16日数据如下图所示:现在需要用这些每日数据做汇总报表,按日期汇总统计每天的投入数、合格数、合格率,列出所有的缺陷种类每天发生的次数,目标报表如下图所示:这个汇总的棘手问题是每日数据中缺陷种类列数不定,数据结构不相同,需要对每天的数据做合并处理。解决的思路是先把每日数据转置为行式,形成检验日期、缺陷种类、缺陷数共三列的数据,如下图。最后把这些数据合并到一起做交叉分组统原创 2022-06-28 12:16:47 · 626 阅读 · 0 评论 -
如何关联分段代码表生成统计报表
有各学校学生成绩表scores.xlsx,部分数据如下图所示: 在第2个sheet“设置”中有各科成绩分级设置,如下图所示:现在需要用这些数据做一个学校成绩汇总报表,统计各学校各科平均分及各分数等级占比,目标报表如下图所示:这个汇总的要求是要根据设置中指定的科目和顺序显示,设置的科目变了,汇总表会自动跟随改变。1、 运行集算器可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。2、 编写脚本:把代码列出来看得清楚点:A1 定义数据文件scores.xlsxA2原创 2022-06-27 11:22:57 · 169 阅读 · 0 评论 -
如何用明细数据批量制作卡片
需求描述:下面是学生考场及座位的明细数据:想要实现每 40 人排在一个教室,格式如下图所示:分析:每页 EXCEL 显示 40 个学生的座位号,按 1~40 的顺序纵向每列显示 6 个,横向每行是 7 个,如上图,也每页打印 42 个卡片,每页除了 40 个学生的卡片,还需要显示两个空的卡片占位,最简便的方式是在原有记录中每 40 条记录后补两条空记录。具体实现:启动报表设计器,通过工具栏中的新建按钮,新建一张空白报表。报表中增加数据集,在”报表”菜单——数据集——增加,数据集类型为”脚本数据集”, 具体定原创 2022-06-23 10:06:36 · 928 阅读 · 0 评论 -
如何生成有明细序号的分类统计表
有某居委会统计的所辖区内居民家庭组成情况明细数据,存放在 Excel 文件,如下现在,想基于上面的数据做一个分类统计表,每户为一组(增加分类序号:A 列),再按“户主”与“成员”两类(B 列)分列人员。另外,为每户添加明细序号(C 列),如先来分析一下,Excel 是可以做这种分类统计表的,但是要一户一户的去找数据再绘制,这种手工硬画的方式太麻烦了,不仅费时费力,还容易搞错数据。再出现个居民人口变化(如新生儿出生后明细数据增加等)等数据变化的情况,又得修改报表。有没有便捷的工具能快速搞定,且实现一劳永逸呢?原创 2022-06-22 09:24:08 · 486 阅读 · 0 评论 -
VBA 如何多条件查询汇总
如何根据医院名称、报表时间和报表类别查询,按定点医院名称、分类进行分组,计算各项费用之和。相关的数据与统计表如下:表数据:希望点击 "查询" 按钮后就能自动计算,将相应的数据按上面形式填充到 A4:L18 之间的表格。可以使用集算器, 按所给条件查询汇总后再被 VBA 调用。集算器安装包可去润乾网站下载职场版,运行时需要一个授权,免费版本就够用。我们将上述事例实现步骤:1. 在集算器新建脚本,命名为 hospital.dfx,设置脚本参数:设置参数分别是 Excel 文件名,医院名称、报表日期、报表原创 2022-06-21 10:50:30 · 4210 阅读 · 0 评论 -
如何将明细数据自动分类生成汇总报表
原始需求:【答复】022 报表分类统计现有这样的明细数据表我们希望按照下图的样子统计按照负责单位分组并进行分组小计。制作关键点:1. 根据负责单位分组2. 计算出分组小计数据文件:明细数据.xlsx制表过程:1. 启动润乾报表工具2. 新建空白报表3. 设置报表的数据集为 文件数据集打开”文件数据集”设置界面,如下文件 – 选择,Excel 数据文件4. 制作报表(编辑表达式、设置样式等)4.1 画出表格基本结构4.2 取数编写计算表达式A2:=ds1.group(负责单位; 负责单位:1)B2:=ds1.原创 2022-06-20 11:21:21 · 3328 阅读 · 0 评论 -
如何根据参数选择 Excel 并筛选数据后生成报表
有某超市 2020 年各月产品采购明细数据,按月存放在“HDatas”的 Excel 文件,如下数据格式如下报表要求: 输入开始及结束日期两个参数(不跨月)后,找到对应的 Excel 文件并查询出开始日期 17 点到结束日期 17 点之间的记录。如上图所示,传入”2020-06-02”及”2020-06-06”,要查询出对应月份 Excel 文件内圈住的数据生成报表。下载地址:http://www.raqsoft.com.cn/wx/download-for-businesspeople.html...原创 2022-06-17 09:28:09 · 1334 阅读 · 0 评论 -
表达式计算
编写 SPL 脚本:A1 eval函数动态解析并计算表达式,计算后的结果是 4编写 SPL 脚本:A1 eval函数动态解析并计算表达式,变量 a 赋值 1A2 eval函数动态解析并计算表达式,计算结果是 0.5原创 2022-06-15 10:33:05 · 112 阅读 · 0 评论 -
生成排列组合
Excel文件book1.xlsx中有下图所示的3个单元格,格中是用逗号分隔的数据现在要列出它们组成的排列组合,每行一种组合,如下图所示:编写SPL脚本:A1 从剪贴板里读取数据,用\t拆分出每格数据,再用逗号拆分出每格中的数据,选项@c表示用逗号拆分A2 循环A1的每个成员,拼成一个字符串A1(1);A1(2);A1(3)A3 把A2拼的串以宏的形式娄成xjoin函数的参数,即把每格中的拆分数据形成的序列完全叉乘起来A4 把A3中的计算结果转换成字符串后放进剪贴板首先打开book1.xls原创 2022-06-14 09:44:27 · 374 阅读 · 0 评论 -
如何对两个 Excel 表实现各种类型的 JOIN
某Excel中的sheet分为3类,其中sheet A是基础表,部分数据如下:Sheet B1\B2…Bn是关联表,它们的格式都一样,且与A有相同的列interval1、interval2、interval3。其中一个B的部分数据如下:Sheet C用来描述A与B1\B2..Bn的Join类型,共3种,其中cross Join表示笛卡尔积;leftJoinBig表示左关联,关联列是interval1;leftJoinSmall也是左关联,关联列是interval1、interval2。部分数据如下:计算目标原创 2022-06-13 09:34:07 · 2199 阅读 · 0 评论 -
某月 / 季 / 年的第一个星期五
编写 SPL 脚本:A1 n表示星期几,星期日为 0,依次 +1A2 先用 pdate@m 找到本月的第一天,然后这一天加 6-n 天,再找该日期的周日 +n 天即可,结果为:2021-05-07A3 先用 pdate@q 找到本季度的第一天,然后这一天加 6-n 天,再找该日期的周日 +n 天即可,结果为:2021-04-02A4 先用 pdate@y 找到本年的第一天,然后这一天加 6-n 天,再找该日期的周日 +n 天即可,结果为:2021-01-01...原创 2022-06-10 10:01:51 · 105 阅读 · 0 评论 -
生成一组连续的周日
生成2020-02-01到2020-04-30之间周日序列,结果如下图所示:编写SPL脚本:A1 定义变量start为开始日期2020-02-01A2 求开始日期所在周的周日,选项@w表示获得指定日期所在周的周日A3 如果A2小于开始日期,则令start为A2+7,即下一个周日,否则令start为A2A4 生成开始周日start与结束日期2020-04-30之间间隔7天的日期序列,即指定的起止时间段内连续的周日序列。选项@x表示不包含后端日期2020-04-30...原创 2022-06-09 09:48:11 · 96 阅读 · 0 评论 -
生成一组相同间隔的连续时间点
在Excel文件中生成2020-03-01到2021-03-30之间间隔31天的日期序列,结果如下图所示:编写SPL脚本:A1 生成2020-03-01到2021-03-30之间间隔31天的日期序列A2 将A1保存到文件book1.xlsx在Excel文件中生成08:00到20:00之间间隔2小时的时间序列,结果如下图所示:编写SPL脚本:A1 生成08:00到20:00之间间隔2小时的时间序列,选项@s表示间隔时间单位为秒A2 将A1保存到文件book1.xlsx在Excel文件中生成20原创 2022-06-08 09:41:53 · 396 阅读 · 0 评论 -
如何在连续值中补足缺失部分
现有Excel文件book1.xlsx,数据如下:需要将第四列的日期补足缺失部分,结果如下:借助集算器可以很方便地完成这件事。集算器安装包可去润乾网站下载集算器职场版,运行时需要一个授权,免费版本就够用。在集算器中编写脚本p1.dfx:A1 读取 book1.xlsx 数据,选项@w表示将数据读成序列的序列。A2 根据最大最小日期计算出完整的日期序列A3 将原表按照完整的日期序列对齐A4 填充空行的日期A5 导出结果至 book2.xlsx2. 执行脚本,book2.xlsx原创 2022-06-07 10:04:25 · 126 阅读 · 0 评论 -
生成两个日期之间的所有日期
编写 SPL 脚本:A1 periods(s,e,i)函数,s 为起始日期,e 为终止日期,i 为间隔,默认时间间隔单位为日,@m 表示 i 的单位为月,还有 @y 表示年,@q 表示季度,@t 表示旬,@s 表示秒,A1 的结果为:A2 将 A1 中的参数 i 改为 2 的话,结果如下:...原创 2022-06-06 10:33:25 · 231 阅读 · 0 评论 -
如何统计哪个分类下个数最多以及是多少
有 Excel 文件 book1.xlsx,数据如下所示:数据特征为:每行的日期并不连续,从远到近做红绿字记录,会跨年一直记录下去;每个日期只会对应一个红字或绿字。现在需要统计绿字最多月出现次数(找到并算出单月最多次数),填到右侧的日期、次数下,结果如下:在集算器中编写脚本 p1.dfx,如下所示:简要说明:A1 从 excel 中复制左侧数据区域A2 将 A1 读成序列的序列,过滤出“绿字”不为空的记录A3 先将字符串形式的日期,按”/”分割为年、月、日,再将年、月拼为“年 / 月”,按日期的“原创 2022-06-01 09:38:27 · 120 阅读 · 0 评论 -
按日期的年月统计
举例有 Excel 文件 Book1.xlsx,数据如下所示:date val 2018/1/1 1 2019/1/1 2 2019/2/1 3 2019/2/5 4 2019/3/5 5 2019/3/10 6 2019/3/19 7 2019/3/19 8 2019/4/15 9 2019/4/29 10 按 date 的年月统计 val 的和,结果如下:YM total原创 2022-05-31 13:03:50 · 171 阅读 · 0 评论 -
如何拆分文本并分类统计
例题描述和简单分析将下面 A 列数据拆分成右边的形式,有 @符号的要加到一起。相关的数据如下:需要统计出孔 (即 @的数据)、夹及其它的数据。解法及简要说明1. 在集算器中设置 demo.dfx 脚本参数:设置参数 arg1 为 Excel中 A列数据。2. 编写脚本 demo.dfx: A B 1 =(arg1).(~.split(",").(~.split("="))) / 将数据按行拆分成键值结构 2 >A1.run(r原创 2022-05-30 10:53:36 · 139 阅读 · 0 评论 -
如何截取空格分隔的串中前 2 个单词
例题描述和简单分析有 Excel 文件 book1.xlsx,如下所示:现需要将 A1 中字符串拆分成单词,取前 2 个,用空格拼接,结果如下:解法及简要说明Excel中加载插件 ExcelRaq.xll 后。在 B1 格输入公式:=esproc("=?.words().to(2).concat("""")",A1),即可算出结果。...原创 2022-05-26 10:51:16 · 204 阅读 · 0 评论 -
拆出单词
举例编写 SPL 脚本: A 1 Guo Weimin(郭卫民 ), spokesperson of the fourth session of the 13th CPPCC National Committee, will brief journalists on the session and take questions. 2 =A1.words@d() 3 =A1.words@a() 4 =A1.words@w() A1 串包含中、英、数..原创 2022-05-25 09:23:53 · 81 阅读 · 0 评论 -
如何将字符串按类型拆开再统计
例题描述在 Excel 中有一行数据,为括号和逗号以及数字等混合在一起的字符串,如下图所示:现在需要先将里面的所有数值拆分出来。然后统计每个数值前面有多少左括号 (‘(‘),以及有多少连接符 (‘-‘),比如其中的数值 1,共有 5 个左括号,1 个连字符。期望的结果如下:实现步骤1. 运行集算器,新建一个程序网格可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。2. 用 Excel 打开需要计算的文件,比如上例。3....原创 2022-05-24 11:49:26 · 159 阅读 · 0 评论 -
拆开不同类型的字符
举例有Excel文件book1.xlsx中有下图所示的考勤数据,某一天某位员工有多种考勤现象,如 A 表示迟到,A 后面的数字表示迟到时间,B 表示早退,B 后面的数字表示早退时间,C 表示请假,C 后面的数字表示请假时间,以此类推。现在想要对这种情况进行汇总,分别统计每种字母后面的数字和,填在图中的Total区域。编写SPL脚本: A 1 =clipboard().split@t("\t") 2 =create(type,value) 3 =A1.(~.原创 2022-05-23 09:05:09 · 133 阅读 · 0 评论 -
拆分字串去除不合适的字符
例题描述在 Excel 中有一列包含了字母以及数字的数据,如下图所示:现在需要去除格子中的字符,仅保留里面的数字。期望的结果放到 C 列,效果如下:实现步骤1. 运行集算器,新建一个程序网格可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。2. 用 Excel 打开需要计算的文件,比如上例。3. 选中区域 A1:A10,然后按 Ctrl+C 复制文本。4. 切换回集算器,然后选中格子 A1,注意要让光标落入文本编辑框后...原创 2022-05-19 15:13:10 · 106 阅读 · 0 评论 -
如何从串抽取指定格式的子串
例题描述和简单分析有 Excel 文件 book1.xlsx,如下所示:现在要拆出 B 列字符串中的多个数字,取第 1 个数字放入 E 列,结果如下:解法及简要说明Excel中加载插件 ExcelRaq.xll 后。在 E2 格输入公式:=esproc("=?.words@d()(1)",B2),其余单元格以此类推,即可算出结果。...原创 2022-05-11 10:13:05 · 96 阅读 · 0 评论 -
拆出数字
举例Excel文件book1.xlsx中有一列混合了字符和数字的数据,其中数字可能在多处出现,且出现规律不定。数据如下图所示:现在想要将每一行中的所有数字分离出来,并将分离出来的结果放置到 B 列,期望效果如下图:编写SPL脚本: A 1 =clipboard().import@i() 2 =A1.(~.words@d().concat()) 3 =clipboard(A2.concat("\n")) A1 读入剪贴板数据,选项@i表示读成..原创 2022-05-10 10:33:33 · 79 阅读 · 0 评论 -
如何对指定区域的数据进行带文字信息的分类汇总
例题描述和简单分析有 Excel 文件 book1.xlsx,如下所示:现在要统计每个分类下的数量、单位总计,结果如下:解法及简要说明Excel中加载插件 ExcelRaq.xll 后。在 C7 格输入公式:=esproc("=?.group(~(2)).(int(~.(~(1)).sum())/""""/~.(~(2))(1)).concat(""/"")",C3:D6)在 C12 格输入公式:=esproc("=?.group(~(2)).(int(~.(~(1)).su原创 2022-05-09 11:24:44 · 261 阅读 · 0 评论 -
多个字符串拼接生成
举例8x2.6x0.9是英寸表示的尺寸数据,现在要将它转换成厘米表示的尺寸数据。结果如下:20.32x6.60x2.29cm编写 SPL 脚本: A 1 8x2.6x0.9 2 =A1.split@p("x").(string(~*2.54,"#.00")).concat("x")+"cm" A1 英寸表示的尺寸数据A2 函数 split 将字符串按分隔符 x 拆分为序列,@p 表示自动解析数据类型,数值序列中的英尺数据换算成厘米数据,换算好的数据转...原创 2022-05-07 09:25:09 · 195 阅读 · 0 评论 -
字符串拆分成多个
举例例1:逗号分隔符拆分串7,45,31,12是由逗号分隔的数字串,找出最大数字编写 SPL 脚本: A 1 7,45,31,12 2 =A1.split@cp().max() A1 由逗号分隔的数字串A2 函数 split 将字符串拆分为序列,@c 表示按逗号拆分(也可以不加 @c,直接用参数 ","),@p 表示自动解析数据类型,比如整数字符串解析为整数。结果为:45例2:转义字符分隔符拆分串12是由回车符分隔的数字串,找出最大数...原创 2022-05-05 08:30:09 · 1435 阅读 · 0 评论 -
如何利用有规则的字串将一行扩展成多行
某生产日报表如下:现根据日报统计,目标结果如下:难点分析:本例中要将“不良分类(AC 列)”的数据拆分到多行多列中,如日报第一条数据:拆分后要形成 3 条记录,其中前两条:代码表为:第三条记录形成规则为日报中 W 列(如下图)不为空时新增一条记录其他还有若干要求,具体查看前面截图中的“统计要求”。使用集算器实现步骤:1. 安装运行集算器可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。2. 编写脚...原创 2022-04-29 09:30:21 · 136 阅读 · 0 评论 -
横向扩展出多列
举例Excel文件book1.xlsx中有序存放着多种部件及其金属子部件,当Level=2时,表示该行为部件(汇总行),当Level=3时,表示该行为子部件。Material列和Proportion列分别存放子部件的金属名称和占比。如下所示:现在要在部件(汇总行)的右侧拼上每种金属的占比,如下所示:编写SPL脚本: A 1 =T("e:/work/book1.xlsx") 2 =A1.id(Material).select(~) 3 =A1.der原创 2022-04-27 08:37:36 · 172 阅读 · 0 评论 -
数据变化时插入空行
举例有 Excel 文件 Book1.xlsx,数据如下所示:AHMAD MAULUD AHMAD MAULUD AHMAD MAULUD DOLLY INDRA SIREGAR DOLLY INDRA SIREGAR DOLLY INDRA SIREGAR MANCHESTER MANCHESTER MANCHESTER 需要在两行格值变化时插入空行,结果如下:AHMAD MAULUD AHMAD MAULUD AHMAD MAULUD D原创 2022-04-26 10:10:01 · 213 阅读 · 0 评论 -
特定行后插入行
举例Excel文件book1.xlsx中有数据如下图所示:现在需要在数字100后面插入一行,并依次填入001、002、…等。编写SPL脚本: A 1 =file("e:/work/book1.xlsx").xlsimport() 2 =A1.group@i(~[-1].#1==100) 3 =A2.(~|new(string(#,"000"))).conj() 4 =file("e:/work/book2.xlsx").xlsexport(A原创 2022-04-25 11:26:07 · 179 阅读 · 0 评论 -
每隔 N 行补足若干空行
举例Excel文件book1.xlsx中有学生考场及座位的明细数据,部分数据如下图所示:现在需要用这些数据来制作报表,实现每40人一页排在一个教室,共7行6列显示座位示意图,每页打印42个卡片,每页除了40个学生的卡片,还需要显示两个空的卡片占位,因此需要在原有记录中每40条记录后补两条空记录。编写SPL脚本: A 1 =T("e:/work/book1.xlsx") 2 =row=A1.create().insert(0) 3 =A1.group((原创 2022-04-24 09:28:43 · 84 阅读 · 0 评论 -
如何在连续值中补足缺失部分
现有Excel文件book1.xlsx,数据如下:sadf ugbinvma 26 2020-01-01 sadf ugbinvma 37 2020-03-01 sadf ugbinvma 22 2020-09-01 sadf ugbinvma 87 2020-11-01 需要将第四列的日期补足缺失部分,结果如下:sadf ugbinvma 26 2020-01-01原创 2022-04-22 10:22:37 · 419 阅读 · 0 评论 -
在连续值中补足缺失部分
举例有商品日销售记录表sales.xlsx,有些日期没有销售记录,部分数据如下图所示:现在需要按日期顺序列出每日销售数据,没有销售数据的日期也要列出来,如下图所示:编写SPL脚本: A 1 =T("e:/work/sales.xlsx") 2 =A1.min(saledate) 3 =A1.max(saledate) 4 =A2|(A3-A2).(A2+~) 5 =A1.align(A4,saledate) 6 =A5原创 2022-04-21 09:16:29 · 119 阅读 · 0 评论 -
如何把文字拆开形成多行
例题描述Excel文件中有如下加班记录数据,同一日期记有多人加班,现在想要变成一人一行。实现步骤1、 运行集算器可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。2、 编写脚本:把代码列出来看得清楚点: A 1 =clipboard().import@t() 2 =A1.news(加班人员.split@c();日期,~:加班人员) 3 =clipboard(A2.export@t()) A1 ...原创 2022-04-20 09:14:08 · 330 阅读 · 0 评论 -
查找逗号分隔串所有的对应值
例题描述在 Excel 中有一行分别用逗号分隔的两列值,数据截图如下:现在需要将每一列中的值,按逗号拆分,然后将拆分后的值构成二维表放到 Sheet2 页,期望结果如下:实现步骤1. 打开集算器,新建文件。2. 编写处理代码,代码以及含义如下: A B 1 =clipboard().split@n("\t")(1) 2 =A1.(~.split@c()) 3 =A2(1).([~,A2(2)(#)])...原创 2022-04-19 09:56:23 · 422 阅读 · 0 评论 -
拆分文字后扩展成多行
举例Excel文件book1.xlsx中D列和E列有多行文字,两者行数相同且一一对应,比如F对应Fail。现在需要将D列和E列按换行符拆分,并扩展成多行,结果应当如下:编写SPL脚本: A 1 =T("E:/work/book1.xlsx") 2 =A1.run(Grades=Grades.split("\n"),Comment=Comment.split("\n")) 3 =A2.news(Grades.len();Names,Class,Yea原创 2022-04-18 09:42:14 · 109 阅读 · 0 评论 -
如何根据某列内容整理选用不同的其它列
例题描述有如下Excel文件book1.xlsx,红色字体行是一对夫妻的记录,FIRST NAME中用&分隔,男性在前女性在后。其它行中DOB和HEALTH有值的是男性,男性的DOB1和HEALTH1为空,女性正好与男性相反。现在需要把数据转换成如下格式:夫妻拆分成两条记录,增加SEX列保存性别,删除DOB1和HEALTH1列,它们的值分别存入DOB和HEALTH。实现步骤1、 运行集算器可去润乾官网下载职场版,同时下载一个免费授权就够了,首次运行时会提示加载。.原创 2022-04-15 09:37:31 · 193 阅读 · 0 评论