首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将拆分公式与从拆分结果中选择N个唯一单词的公式组合起来

将拆分公式与从拆分结果中选择N个唯一单词的公式组合起来
EN

Stack Overflow用户
提问于 2022-07-18 10:22:14
回答 2查看 71关注 0票数 0

我得到了一个没有标点符号的句子。接下来,我想选择三个随机的,但独特的词,从这个分裂。我使用在单元格I2中看到的公式。是否有可能将分裂公式和另一个公式合并成一个(大)公式?

分裂公式:

代码语言:javascript
运行
复制
=ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]",""))

选择三个随机唯一的单词的公式:

代码语言:javascript
运行
复制
=ARRAYFORMULA(ARRAY_CONSTRAIN(SPLIT(FLATTEN(QUERY(QUERY(QUERY(SPLIT(FLATTEN( 
ROW(B2:G2)&"×"&RANDARRAY(ROWS(B2:G2), COLUMNS(B2:G2))&"×"&B2:G2), "×"),
"select max(Col3) group by Col2 pivot Col1"),
 "offset 1", 0),,9^9)), " "), 9^9, 3))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-18 12:38:30

我知道你想从一个字符串中得到3个随机的唯一单词。

在下面的内容中,我将演示如何获得真正随机的单词,当工作表被修改时,加上处理异常、浮点数等等,请看一下这张纸

解决方案:

备注:

  • 此解决方案使用标点符号,注意突出显示的黄色字符。
  • 要得到N个唯一的随机词,只需用一个单元格来代替SORTN函数的n个。

将此公式粘贴到B2中。

代码语言:javascript
运行
复制
=ArrayFormula(IF(A2="",,JOIN(" ,",TRANSPOSE(QUERY(SORTN({RANDARRAY(COUNTA(UNIQUE(SPLIT(TRIM(REGEXREPLACE(A2,"[[:punct:]]",""))," ")))),TRANSPOSE(UNIQUE(SPLIT(TRIM(REGEXREPLACE(A2,"[[:punct:]]",""))," ")))},3,,1,RANDBETWEEN(0,1))," Select Col2 ")))))

Explanation:待决..。

1-我们需要UNIQUE(SPLIT(TRIM(REGEXREPLACE(A2,"[[:punct:]]",""))," "))重新放置标点符号,开始时没有""TRIM空格,尾随和附加空格,以" "作为分隔符的字符串SPLIT,然后得到SPLIT生成的UNIQUE列,这是

TRANSPOSE(UNIQUE([Output])类似的输出He|is|cunning|as|a|foxTRANSPOSE

之后再用随机数列加入它。

2-我们需要一个数组{},它包含带有随机数的He|is|cunning|as|a|fox和列,比如{ RANDARRAY , He|is|cunning|as|a|fox }

获得具有随机数的列:RANDARRAY(COUNTA(UNIQUE(SPLIT(TRIM(REGEXREPLACE(A2,"[[:punct:]]",""))," "))))

RANDARRAY[columns]设置为1,将行设置为COUNTA(UNIQUE(SPLIT(TRIM(REGEXREPLACE(A2,"[[:punct:]]",""))," "))),即COUNTA( He|is|cunning|as|a|fox )

3-现在我们必须SORTN输出,在这个例子中,n设置为3,意思是3个单词。

“得到N个唯一的随机词”只是用一个单元格来代替n。

sort_column设置为1随机数列,is_ascending设置为RANDBETWEEN(0,1)以获取01,is_ascending 0表示排序的下降,1表示真正的排序升序。

4- QUERY“SelectCol2 ",词的随机列。

5- TRANSPOSE列。

6- JOIN" ,"

票数 3
EN

Stack Overflow用户

发布于 2022-07-18 11:55:01

经过一段时间的研究,我发现使用array_constrain来选择固定数量的结果,并使用随机数组对结果进行随机排序。

代码语言:javascript
运行
复制
=ARRAY_CONSTRAIN(
transpose(SORT(transpose(ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]",""))),
randarray(COUNTA(ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]","")))),true))
,1,3)

如果有人对此有更好的解决办法,我很乐意看到一个答复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73020768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档