Google Sheets:从含指定文本的字符串提取数值后执行运算
解决方法:提取带单位的数值并按规则运算
核心公式(以拆分数据在B列为例)
在需要输出结果的单元格(比如C3)中输入:
=REGEXEXTRACT(B3,"\d+") * IF(REGEXMATCH(B3,"tb"), 1000, 1)
下拉填充即可应用到所有行。
公式解释
REGEXEXTRACT(B3,"\d+"):从拆分后的字符串(如5tb、200gb、2tb)中提取所有连续数字,适配你所有案例的格式场景。REGEXMATCH(B3,"tb"):检查当前单元格的字符串是否包含tb标识。- 逻辑判断:如果包含
tb,提取的数值乘以1000;否则乘以1(保持原数值不变)。
原公式出错原因
你的原公式存在两个关键问题:
- 单元格引用混乱:同时用到了原始数据列和拆分数据列,导致判断条件和提取数值的数据源不一致(比如第三组中,原始数据含
tb但当前拆分数据是500gb,公式错误触发了乘以1000的逻辑)。 - 提取规则冗余:
REGEXEXTRACT(A6,"(\d+)tb")限定了数字必须紧跟tb前,虽然你的案例符合这个格式,但核心问题还是引用错误导致结果异常。
易修改扩展方案
如果后续需要新增其他单位的运算规则(比如gb保持原值、mb乘以0.001),可以用SWITCH函数让规则更清晰,方便修改:
=REGEXEXTRACT(B3,"\d+") * SWITCH(TRUE, REGEXMATCH(B3,"tb"), 1000, REGEXMATCH(B3,"gb"), 1, REGEXMATCH(B3,"mb"), 0.001, 1)
新增规则时,直接在SWITCH里追加一行条件和对应乘数即可。
内容的提问来源于stack exchange,提问作者Oldy
相关产品推荐
相关产品推荐

