我有数据的Excel表格,只是想要改组单元格A值。后""值就像在单元格B中一样洗牌。我知道从不同单元格中改变值的方法。但不知道如何在同一行内做什么
Row No. | A B
1 | Text One, Text Two, Text Three Text two text one text three
2 | Text name, Text You, Text Me Text Me Text name Text You
3 | Text 1, Text 2, Text 3 Text 1 Text 3 Text 2
答案 0 :(得分:1)
您可以使用VBA功能随机化"单词"在细胞内。您没有明确提到这一点,但看起来您还需要在此过程中将分隔符从逗号更改为空格。
这可以通过VBA使用辅助列的整束来实现,但不推荐使用。这个VBA函数可以解决这个问题:
Function randomizeSentence(sentenceIn As String, _
Optional delimIn As String = ",",Optional delimOut As String = " ") As String
Dim strIn As String, strOut As String, arr, occ As Long
strIn = sentenceIn 'put input in variable
Do
strIn = Application.WorksheetFunction.Trim(strIn) 'remove whitespace
arr = Split(strIn, delimIn) 'separate words into array based on spaces
occ = Int(Rnd() * (UBound(arr) + 1)) 'get a random word
strOut = strOut & Trim(arr(occ)) & delimOut 'append word to output
strIn = Trim(Replace(strIn, arr(occ), "")) 'remove word from input
If Right(strIn, 1) = delimIn Then strIn = Trim(Left(strIn, Len(strIn)-1))
Loop While Len(Replace(strIn, delimIn, "")) > 0 'go until only delim's left
randomizeSentence = Application.WorksheetFunction.Trim(strOut)
End Function
这可以用作工作表函数:
=randomizeSentence(A1)
或作为VBA函数:
MsgBox randomizeSentence(Range("A1"))
'or
MsgBox randomizeSentence("abc, def, ghi")
分隔符参数:
请注意,该功能接受替代"输入" &安培; "输出"要指定为参数的分隔符,例如:
randomizeSentence ( inputString, inputDelimiter, outputDelimiter )
...但是,如果未指定它们,则默认为您在示例中使用的内容 (输入分隔符=逗号;输出分隔符=空格)
<强>重新随机化:强>
请注意,此功能将不在正常Excel自动或手动重新计算中自动重新计算(即, F9 )
(这个类型的功能的名称,但它现在让我很高兴;也许有人可以提醒我?![WEBSERVICE]是另一个例子。)
将,但是,当您输入公式时重新计算(重新随机化),或者更改其引用的单元格中的值,或者如果您单击在单元格上,点击 F2 输入,或使用VBA方法。Application.CalculateFullRebuild
编辑: a&#34;更便宜&#34;强制函数重新计算每个工作表更改的方法是在函数中添加Application.Volatile
。 (谢谢@QHarr!)
DecisionModels.com: Volatile Excel Functions