永洪社区

标题: 只有len, 没有lenb,这个分列,或者提取怎么操作(如图) [打印本页]

作者: changda56    时间: 2022-7-29 17:22
标题: 只有len, 没有lenb,这个分列,或者提取怎么操作(如图)
本帖最后由 changda56 于 2022-7-29 17:23 编辑

如图,采购单位名称,我只想要汉字,不要后面的英文编码。(例如,excel    LEFT(A4,LENB(A4)-LEN(A4))    就能把中文提取出来)



作者: Nero    时间: 2022-7-29 17:22
本帖最后由 Nero 于 2022-7-29 20:02 编辑

可以新建列,用正则函数提取
  1. 中文列:extractNTH(col['采购单位名称'], '([\u4e00-\u9fa5]+)([A-Z|a-z]+)', 1)
  2. 英文列:extractNTH(col['采购单位名称'], '([\u4e00-\u9fa5]+)([A-Z|a-z]+)', 2)
复制代码




作者: yhdata_yzm    时间: 2022-7-29 17:33
拆分列不好做你后边的英文都是固定个数的吗
作者: 永洪tech-Lerry    时间: 2022-7-29 20:13
如果您这边的区分点都是“公司”的话,可以新建计算列如下:
split(col['采购单位名称'],'公司',1)+'公司'
实现效果如图:



作者: yhdata_yqQ63BDv    时间: 2022-7-29 23:45
来学习学习
作者: 永洪tech-mcs    时间: 2022-7-30 10:53
如有问题可再提出
作者: changda56    时间: 2022-7-30 17:44
Nero 发表于 2022-7-29 20:01
可以新建列,用正则函数提取

我取的“中文列”的代码,没有起到任何作用啊。是不是写的有问题啊。
作者: changda56    时间: 2022-7-30 17:44
永洪tech-Lerry 发表于 2022-7-29 20:13
如果您这边的区分点都是“公司”的话,可以新建计算列如下:
split(col['采购单位名称'],'公司',1)+'公司'
...

区分点,有“公司” 有“出版社”,数据没截全,所以您这个方法,不可取。谢谢。
作者: changda56    时间: 2022-8-1 10:05
我的解决方案是:先建个“计算列”,过渡一下。
第一步:用 if 和 find 找出第1个“司”或者"社”的位置。这个计算列取名为“辅助列”。

if find("司",col['采购单位名称'],1)==0 then (find("社",col['采购单位名称'],1)+2)/3 else (find("司",col['采购单位名称'],1)+2)/3  end

第二步:再用left写个计算列,这个计算列,就是想要的结果了。

left(col['采购单位名称'],col['辅助列'])

你可能会问,为什么第1个计算列,还要加上2,再除以3  ,我也不知道是为什么,可能是永洪的BUG。不这样,不是我要的那个“数字”
作者: changda56    时间: 2022-8-1 10:08
Nero 发表于 2022-7-29 20:01
可以新建列,用正则函数提取

我已经解决了。
我的解决方案是:先建个“计算列”,过渡一下。
第一步:用 if 和 find 找出第1个“司”或者"社”的位置。这个计算列取名为“辅助列”。

if find("司",col['采购单位名称'],1)==0 then (find("社",col['采购单位名称'],1)+2)/3 else (find("司",col['采购单位名称'],1)+2)/3  end

第二步:再用left写个计算列,这个计算列,就是想要的结果了。

left(col['采购单位名称'],col['辅助列'])

你可能会问,为什么第1个计算列,还要加上2,再除以3  ,我也不知道是为什么,可能是永洪的BUG,不联动,不需要(加2除3)就显示正确结果了。可是联动,就要这样处理一下。好奇怪 。
作者: Nero    时间: 2022-8-1 10:13
changda56 发表于 2022-7-30 17:44
我取的“中文列”的代码,没有起到任何作用啊。是不是写的有问题啊。

我在脚本里测试了一下,没啥问题啊,难道列里面不行吗
作者: yhdata_yzm    时间: 2022-8-1 10:13
changda56 发表于 2022-7-30 17:44
区分点,有“公司” 有“出版社”,数据没截全,所以您这个方法,不可取。谢谢。 ...

extractNTH(col['列'], "[\u4e00-\u9fa5]+",1)
你参考下
作者: changda56    时间: 2022-8-1 10:44
yhdata_yzm 发表于 2022-8-1 10:13
extractNTH(col['列'], "[%u4e00-%u9fa5]+",1)
你参考下

基本解决我的问题,如果说有一点不完美,那就是比如“国开童趣(北京)xxxx公司”,这个带括号的,给抽取成了“国开童趣”四个字。其他的都对。
作者: changda56    时间: 2022-8-1 10:45
Nero 发表于 2022-8-1 10:13
我在脚本里测试了一下,没啥问题啊,难道列里面不行吗

yhdata_yzm  这位工程师,extractNTH(col['列'], "[%u4e00-%u9fa5]+",1) 解决了我的问题,你那个,确实是有问题的。
作者: Nero    时间: 2022-8-1 20:36
changda56 发表于 2022-8-1 10:45
yhdata_yzm  这位工程师,extractNTH(col['列'], "[%u4e00-%u9fa5]+",1) 解决了我的问题,你那个,确实是 ...

棒~
作者: yhdata_yzm    时间: 2022-8-1 20:39
changda56 发表于 2022-8-1 10:44
基本解决我的问题,如果说有一点不完美,那就是比如“国开童趣(北京)xxxx公司”,这个带括号的,给抽取 ...

再往那个正则表达式几遍再加符号就行




欢迎光临 永洪社区 (https://club.yonghongtech.com/) Powered by Discuz! X3.4