如何用SEARCH函数定位kV前字符,判断电压是否符合系统要求?
问题场景
我手里有一批结尾带电压数值的字符串,比如:
- "J7W237 20kV"
- "LABEL34 v20/35kV"
需要判断这些字符串里的电压是否符合系统要求。我本来打算用SEARCH函数定位"kV"的位置,再提取它前面两位字符,但搞不清Excel里的字符串索引怎么操作。目前在用的公式是:
=IF(U284=$F$275;IF(K284>0;IF(F21<SEARCH("kV";D284);"→";"");""))
我用VBA能轻松搞定,但想知道能不能直接用Excel公式简化处理。
Excel公式简化方案
1. 基础场景:提取单组电压值
如果字符串里只有一组电压(比如"20kV"这种),直接用MID结合SEARCH就能提取"kV"前两位:
=MID(D284, SEARCH("kV", D284)-2, 2)
原理就是先找到"kV"的起始位置,往前挪2位,从这个位置开始取2个字符。
2. 进阶场景:处理多电压值(带"/"的情况)
要是遇到"20/35kV"这种带多个电压的字符串,想提取最后一组数值(比如35),可以用下面的公式:
=RIGHT(SUBSTITUTE(LEFT(D284, SEARCH("kV", D284)-1), "/", REPT(" ", 99)), 2)
步骤拆解:
- 先用
LEFT(D284, SEARCH("kV", D284)-1)截掉"kV"及后面的内容,得到"J7W237 20"或者"LABEL34 v20/35" - 用
SUBSTITUTE把所有"/"换成99个空格,确保后面的数值被挤到最右边 - 最后用
RIGHT取右边2位,就能拿到最后一组电压数值
3. 整合判断逻辑
把提取电压和你的原有判断逻辑结合,替换成下面的公式:
=IF(AND(U284=$F$275, K284>0), IF(--RIGHT(SUBSTITUTE(LEFT(D284, SEARCH("kV", D284)-1), "/", REPT(" ", 99)), 2) < F21, "→", ""), "")
这里的--是把提取到的文本型数字转成数值,方便和F21里的系统要求数值做比较。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

