勤哲神器:三招搞定复杂数据拆分!
详情请咨询:刘丁, QQ2377298534, 电话:15652289126(同微信)
勤哲神器:三招搞定复杂数据拆分!

图一
场景痛点
如图一用户输入主表台号如 1,2,5-10,12-18,需自动拆解为明细数据:
1,2,5,6,7,8,9,10,12,13,14,15,16,17,18
难点在于处理 区间符(5-10)和(12-18) 的混合数据!
通过以上数据分析如下:
1.数据按照逗号分开
2.数据中出现2组比较特殊的数据是5-10代表5,6,7,8,9,10,12-18代表12,13,14,15,16,17,18
根据以上信息我们可以分三步高效解决方案(附勤哲公式详解)
第一步:拆解原始数据
核心公式
提取<>中的数据:
按以下方式填入<特殊符号查找_明细> :
字符串拆分(本报表.特殊符号查找_主表.台号, ',') --->(填入值)源数据
使用勤哲软件的字符串拆分功能先根据逗号把数据拆分出如图二

图二
效果:将1,2,5-10,12-18 5-10,12-18 拆分为四行:1,2,5-10,12-18
第二步:破解区间符“-”的奥秘
例5-10如何变成5,6,7,8,9,10现在是重点
要解决5-10变成5,6,7,8,9,10需要做2件事
第1件事:5,6,7,8,9,10中的6,7,8,9数据怎么来?
我们可以借助其他辅助手段,既然没这个数据我们就可以借用,怎么借用,就是做个辅助模板,从其他模板提取来,辅助模板如图三

图三
第2件事:5-10如何获取到5和10

5和10之间有横杠,我们需要根据横杠的位置拆分出5和10,因此我们需要找到横杠在第几个位置,在勤哲软件中有字符串查找可以确定横杠在第几位,如图四
图四
公式内容
提取<>中的数据:
按以下方式填入<特殊符号查找_明细> :
字符串查找( '-',本报表.特殊符号查找_明细.源数据,1) --->(填入值)指定特殊符号出现第几个位置
本报表.特殊符号查找_明细.源数据 ====(按行(列)匹配)源数据
关键技巧
用两列分别提取横杠前后的值如图五:
1️⃣ 提取起始值(横杠前字符):
条件取值(字符串查找( '-',本报表.特殊符号查找_明细.源数据,1)=0,本报表.特殊符号查找_明细.源数据,字符串查找( '-',本报表.特殊符号查找_明细.源数据,1) >0,取子串(本报表.特殊符号查找_明细.源数据,1,字符串查找( '-',本报表.特殊符号查找_明细.源数据,1)-1)) --->(填入值)横杠前的字符
2️⃣ 提取结束值(横杠后字符):

条件取值(字符串查找( '-',本报表.特殊符号查找_明细.源数据,1)=0,本报表.特殊符号查找_明细.源数据,字符串查找( '-',本报表.特殊符号查找_明细.源数据,1) >0,取子串(本报表.特殊符号查找_明细.源数据,字符串查找( '-',本报表.特殊符号查找_明细.源数据,1)+1,字符串长度(本报表.特殊符号查找_明细.源数据) -字符串查找( '-',本报表.特殊符号查找_明细.源数据,1))) --->(填入值)横杠后的字符
图五
第三步:借力辅助表生成连续序列

根据图五获取到的横杠前后字段的数字从图三的辅助模板获取需要的数据就可以达到要求了,公式如图六
图六
技术总结
双策略处理数据:逗号拆分 + 区间符解析
字符串函数组合拳:
字符串查找定位符号 → 取子串拆解数字 → 转数值实现范围匹配
辅助表巧用:预置连续数字
需要完整公式模板?请加刘老师微信15652289126.
