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列の文章はメソッドごとに1回だけ出してほしい。つまり、各要素に列 G の 5 つの固有の文を含めたいと考えています。
たとえば、G1、G4、G2、G9、G10 の 5 つの一意の文をループごとに取得したいとします。同じセルの繰り返しがあってはなりません。つまり、関数が G1、G2、G5、G3、G1 を生成する場合、重複した G1 を列 G の別のランダムなセル番号に置き換えたいと考えています。