Excel 365如何编写公式从逗号空格分隔的字符串中随机提取子串?
Excel 365 从
, 分隔字符串中随机抽取子串实现方案 以下方案完全适配Excel 365版本,可根据你的存储场景直接选用:
基础通用方案(字符串存放在普通单元格)
假设待处理的分隔字符串存放在A1单元格,直接使用以下公式即可:=INDEX(TEXTSPLIT(A1, ", "), RANDBETWEEN(1, COUNTA(TEXTSPLIT(A1, ", "))))
各部分作用说明:
TEXTSPLIT(A1, ", "):按你指定的,(逗号+空格)分隔符将整段字符串拆分为子串数组COUNTA(拆分结果):统计子串的总数量,作为随机数的取值上限RANDBETWEEN(1, 子串总数):生成1到子串总数之间的随机整数INDEX(子串数组, 随机数):根据生成的随机数提取对应位置的子串
小提示:公式默认会在每次表格重算时自动刷新随机结果,如需固定结果可复制公式单元格后右键粘贴为值,也可将Excel重算模式调整为手动,按F9手动触发刷新。
适配Table1结构化表的方案
如果分隔字符串存放在Table1的指定列中(假设列名为源字符串,可替换为你实际的列名),直接使用结构化引用写法即可:=INDEX(TEXTSPLIT([@源字符串], ", "), RANDBETWEEN(1, COUNTA(TEXTSPLIT([@源字符串], ", "))))
这个公式可以直接在Table1的新列中输入,会自动批量应用到所有行。
简化写法(适配最新版Excel 365)
如果你的Excel 365已经支持RANDARRAY和SORTBY函数,也可以使用更简短的写法,效果完全一致:=TAKE(SORTBY(TEXTSPLIT(A1, ", "), RANDARRAY(COUNTA(TEXTSPLIT(A1, ", ")))), 1)
原理是先将拆分后的子串数组随机排序,再取第一个元素作为输出结果。
内容的提问来源于stack exchange,提问作者Kobe2424
相关产品推荐
相关产品推荐

