我正在尝试在 excel 范围之间随机选择并获得不重复的结果。
当我键入时,我得到一个单元格值Msgbox Range("C2")
。
但是,当我使用 时MsgBox Range("F" & WorksheetFunction.RandBetween(1, UBound(ElementHeader)))
,它会告诉我'type-mismatch'
.
知道为什么吗?以及如何将其实际存储到 VBA 中的字符串数组中?
我的代码如下所示:
Sub Testy()
Dim ElementHeader
ElementHeader = Range("F1:F" & Range("F" & Rows.Count).End(xlUp).Row)
MsgBox Range("F" & WorksheetFunction.RandBetween(1, UBound(ElementHeader)))
End Sub
这只是代码的一部分,但我希望将它存储到一个数组中,这样我就可以检查它们中的每一个,看看是否有任何重复。
Sub GenerateDescription()
Dim Element
Dim AddOn
Dim MainRange
' Declare Sentences
' Addon Range is in Column F
AddOn = Range("G1:G" & Range("G" & Rows.Count).End(xlUp).Row)
' Main Range is in Column D
Set MainRange = Range("E1:E" & Range("E" & Rows.Count).End(xlUp).Row)
For Each Element In MainRange
Element.Offset(, 4).Value = Element & " " & Range("G" & WorksheetFunction.RandBetween(1, UBound(AddOn))) & " " & Range("G" & WorksheetFunction.RandBetween(1, UBound(AddOn))) & " " & Range("G" & WorksheetFunction.RandBetween(1, UBound(AddOn))) & " " & Range("G" & WorksheetFunction.RandBetween(1, UBound(AddOn))) & " " & Range("G" & WorksheetFunction.RandBetween(1, UBound(AddOn)))
Next Element
End Sub
如您所见,这个重复G
的 Range 是我要解决的部分。
For Each
我希望 G 列句子在每种方法中只出现一次。意思是,我希望每个元素包含来自 G 列的 5 个唯一句子。
假设我有 10 个句子,对于每个循环,我想得到 5 个唯一的句子,例如:G1、G4、G2、G9、G10。永远不应该重复同一个单元格,这意味着如果函数生成 G1、G2、G5、G3、G1,我想用 G 列中的另一个随机单元格编号替换重复的 G1。