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

分裂公式:
=ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]",""))选择三个随机唯一的单词的公式:
=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))发布于 2022-07-18 12:38:30
我知道你想从一个字符串中得到3个随机的唯一单词。
在下面的内容中,我将演示如何获得真正随机的单词,当工作表被修改时,加上处理异常、浮点数等等,请看一下这张纸。
解决方案:
备注:
SORTN函数的n个。

将此公式粘贴到
B2中。
=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|fox和TRANSPOSE
之后再用随机数列加入它。
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)以获取0或1,is_ascending 0表示排序的下降,1表示真正的排序升序。
4- QUERY“SelectCol2 ",词的随机列。
5- TRANSPOSE列。
6- JOIN与" ,"
发布于 2022-07-18 11:55:01
经过一段时间的研究,我发现使用array_constrain来选择固定数量的结果,并使用随机数组对结果进行随机排序。
=ARRAY_CONSTRAIN(
transpose(SORT(transpose(ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]",""))),
randarray(COUNTA(ARRAYFORMULA(REGEXREPLACE(SPLIT(A2," "),"[,.?!]","")))),true))
,1,3)如果有人对此有更好的解决办法,我很乐意看到一个答复。
https://stackoverflow.com/questions/73020768
复制相似问题