1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何提取一段文本中的数值 并根据单位及时换算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-29 11:52 | 显示全部楼层 |阅读模式
按照项目名称,提取里面这个项目的规模大小。
问题点:
1、单位有时候用kwp(以及其大小写),有时候是千瓦,千瓦时,但都是一样的概念。
2.单位有时候是MW,MWP 以及其大小写,这时候输出的结果要*1000,换算一下。
用EXCEL  Ctrl +E 可以自动填充大部分,但是还是要手工调整。M函数,我也在研究,应该要用正则表达式吗? 测试 提取文本.zip (11.21 KB, 下载次数: 27)

TA的精华主题

TA的得分主题

发表于 2022-11-29 14:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 bjzzxhzl 于 2022-11-29 16:58 编辑

函数公式:


  1. =LET(a,-LOOKUP(,-SEARCH({"kw","千瓦","mw"},A2)),b,-LOOKUP(,-MID(A2,a-ROW($1:$10),ROW($1:$10))),IFNA(IF(ISNUMBER(SEARCH("M",A2)),b*1000,b),""))
复制代码
PQ公式:

  1. = Table.AddColumn(源,"规模(kw)",each let a=Number.From(Text.Select(Text.AfterDelimiter([项目名称],"号",{0,RelativePosition.FromEnd}),{"0".."9","."})) in if Text.Contains([项目名称],"M") then a*1000 else a)
复制代码
B.png


A.png

TA的精华主题

TA的得分主题

发表于 2022-11-29 14:28 | 显示全部楼层
用PQ做的,但有瑕疵,比如要替换数字的“*号”,这个没有通用性,请高手修改

测试 提取文本.7z

16.57 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2022-11-29 14:45 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-29 18:05 | 显示全部楼层
函数解:

  1. =LET(a,-LOOKUP(,-SEARCH({"kw","千瓦","mw"},A2)),b,-LOOKUP(,-MID(A2,a-ROW($1:$10),ROW($1:$10))),IFNA(IF(ISNUMBER(SEARCH("M",A2)),b*1000,b),""))
复制代码
A.png

PQ换了一个新的写法:
  1. = Table.AddColumn(源,"规模(kw)",each let a=Number.From(Text.Select(Text.AfterDelimiter([项目名称],"号",{0,RelativePosition.FromEnd}),{"0".."9","."})) in if Text.Contains([项目名称],"M") then a*1000 else a)
复制代码
B.png

TA的精华主题

TA的得分主题

发表于 2022-11-29 22:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ladeng6666 于 2022-11-29 23:03 编辑

渡渡大佬太给力了!
把渡渡的代码,翻译了一下。

image.png

TA的精华主题

TA的得分主题

发表于 2022-11-29 23:01 | 显示全部楼层
把渡渡大佬的代码,翻译了一下
image.png

TA的精华主题

TA的得分主题

发表于 2022-11-29 23:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-11-30 11:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
B2输入下面公式:

  1. =IF(ISNUMBER(FIND("M",CONCAT(IF((ISNUMBER(--MID(A2,ROW(A$1:$A$50),1))+(MID(A2,ROW(A$1:$A$50),1)=".")+(MID(A2,ROW(A$1:$A$50),1)="M")),MID(A2,ROW(A$1:$A$50),1),"")))),LEFT(CONCAT(IF((ISNUMBER(--MID(A2,ROW(A$1:$A$50),1))+(MID(A2,ROW(A$1:$A$50),1)=".")+(MID(A2,ROW(A$1:$A$50),1)="M")),MID(A2,ROW(A$1:$A$50),1),"")),LEN(CONCAT(IF((ISNUMBER(--MID(A2,ROW(A$1:$A$50),1))+(MID(A2,ROW(A$1:$A$50),1)=".")+(MID(A2,ROW(A$1:$A$50),1)="M")),MID(A2,ROW(A$1:$A$50),1),"")))-1)*1000,CONCAT(IF((ISNUMBER(--MID(A2,ROW(A$1:$A$50),1))+(MID(A2,ROW(A$1:$A$50),1)=".")+(MID(A2,ROW(A$1:$A$50),1)="M")),MID(A2,ROW(A$1:$A$50),1),""))*1)
复制代码


数组公式,下拉

TA的精华主题

TA的得分主题

发表于 2022-11-30 17:38 | 显示全部楼层
let
    源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
    提取 = Table.AddColumn(源, "规模(kwp)", each   Web.Page("<script>document.write( '"&[项目名称]&"'.match(/\d+\.*\d*[kKmM千]/gi))</script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}),
    转换 = Table.TransformColumns(提取,{"规模(kwp)",each if Text.Contains(_,"M") then Number.From(Text.Remove(_,{"k","K","m","M","千"}))*1000 else Number.From(Text.Remove(_,{"k","K","m","M","千"}))})
in
    转换
image.jpg
PQ  正则表达式
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-7 00:55 , Processed in 0.043191 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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