ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 474|回复: 5

[求助] 如何在PQ中统计字符数,使得结果与lenb函数一样?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-6-8 10:49 | 显示全部楼层 |阅读模式
本帖最后由 wsdrm 于 2023-6-8 10:53 编辑

excel中,汉字加字母数字等字符串,len函数应该是把一个汉字算作1个字符进行统计,而lenb函数是把一个汉字算作2个字符进行统计。
我想要的结果是:在PQ中  得到 lenb函数那样的结果。
但在PQ中,我找不到相应的语句。Text.Length 得到的结果与 len函数一致。
请问:在PQ中,我如何编写相应语句进行统计?例子见下图
2023-06-08_105230.png

字符长度计算.zip

16.5 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-8 14:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我根据word字符集,写了如下语句
Table.AddColumn(已添加自定义4, "lenb等效", each List.Count(Text.PositionOfAny([备注],{" ".."~", " ".."〞", "!".."¥", "一".."龥"},Occurrence.All))*2 - List.Count(Text.PositionOfAny([备注],{" ".."~"},Occurrence.All)))
但还是有几个  中文输入法下的标点符号未统计上

TA的精华主题

TA的得分主题

发表于 2023-6-8 15:27 | 显示全部楼层
把字符串拆分为汉字和非汉字分别计算字符长度,汉字长度乘2,再相加。

TA的精华主题

TA的得分主题

发表于 2023-6-8 16:37 | 显示全部楼层
= Table.AddColumn(源, "文本长度", each 2*Text.Length([备注])-Text.Length(Text.Remove([备注],{"一".."龡"})))

TA的精华主题

TA的得分主题

发表于 2023-6-8 17:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
= Table.AddColumn(更改的类型, "字符长度", each [a=Text.Length(Text.Remove([备注],{"一".."龟"})),b=Text.Length([备注]),c=b*2-a][c])

image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-6-8 22:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢上述回答的朋友。根据我对字符集进行简单分析,中国人的书写环境至少涉及以下范围:
1、汉字:Table.AddColumn(已添加自定义, "汉字出现次数", each List.Count(Text.PositionOfAny([备注],{"一".."龥"},Occurrence.All)))
2、全角:Table.AddColumn(已添加自定义2, "全角符号次数", each List.Count(Text.PositionOfAny([备注],{"!".."¥"},Occurrence.All)))
3、半角:Table.AddColumn(已添加自定义3, "半角", each List.Count(Text.PositionOfAny([备注],{" ".."~"},Occurrence.All)))
4、汉字符号及标点:Table.AddColumn(已添加自定义4, "汉字符号", each List.Count(Text.PositionOfAny([备注],{" ".."〞"},Occurrence.All)))
事实上,应该还有 中文输入法下的一些点点符号(很奇怪,经过我的不完全检测,一些是占2字符的,一些是占1个字符的),我没有再深入分析。
所以,想要完全复刻lenb函数的效果,还是挺有挑战的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-16 19:33 , Processed in 0.039324 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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