在excel中的同一行内的值shuffle值(文本)

时间:2018-04-07 06:38:45

标签: excel

我有数据的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

1 个答案:

答案 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!)

更多信息: