Excel公式需求:提取两个单元格中的共同十进制数
解决Excel提取两单元格共有十进制字符串的问题
步骤1:生成A1和B1的随机数据
生成A1的随机十进制字符串(元素从1.3-1.9中随机排序)
在A1输入公式:
=TEXTJOIN(", ", TRUE, INDEX({1.3,1.4,1.5,1.6,1.7,1.8,1.9}, RANDARRAY(7,1,1,7,TRUE)))
该公式会将指定的7个十进制数随机打乱顺序,并用, 连接成字符串。
生成B1的随机十进制字符串(元素从指定集合中随机排序)
在B1输入公式:
=TEXTJOIN(", ", TRUE, INDEX({1.6,1.7,1.8,1.9,1.15,1.16,1.17,1.18,1.19}, RANDARRAY(9,1,1,9,TRUE)))
同理,该公式会将指定的9个十进制数随机打乱后连接成字符串。
步骤2:提取两单元格的共有十进制数到C1
在C1输入以下公式,无需VBA即可直接提取交集:
=TEXTJOIN(", ", TRUE, FILTER(TEXT(TRIM(MID(SUBSTITUTE(A1, ", ", REPT(" ", 100)), SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1, ", ", ""))+1)*100-99, 100)), "0.000"), ISNUMBER(SEARCH(", "&TEXT(TRIM(MID(SUBSTITUTE(A1, ", ", REPT(" ", 100)), SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1, ", ", ""))+1)*100-99, 100)), "0.000")&", ", ", "&B1&", "))))
公式逻辑说明
- 拆分A1为元素数组:通过
SUBSTITUTE将分隔符,替换为长空格,结合MID和SEQUENCE拆分出每个元素,TRIM清理空格后用TEXT统一格式为0.000,避免因小数位数差异导致匹配错误。 - 精确匹配判断:给B1字符串前后添加
,,将每个待匹配元素也包装成, X,的形式,用SEARCH和ISNUMBER判断该元素是否存在于B1中,确保是完整匹配(避免1.1被误判为匹配1.15)。 - 筛选并连接结果:用
FILTER筛选出匹配的元素,最后通过TEXTJOIN用,连接成最终字符串。
注意事项
- 如果你的单元格使用的分隔符是纯逗号(无空格),请将公式中所有
", "替换为","。 TEXT函数的格式可以根据实际数值的小数位数调整(比如用"0.0"或"0.00"),保证匹配精度。
内容的提问来源于stack exchange,提问作者Manish Chaturvedi
相关产品推荐
相关产品推荐

