VBA作成で詰まってるのでお手伝いをお願い致します。 Sub RandomizeData() Dim ws As Worksheet Dim col As Long Dim lastRow As Long Dim rng As Range Dim data() As Variant Dim i As Long, j As Long Dim temp As Variant ' シートの指定 Set ws = ThisWorkbook.Sheets("並べ替え表") ' 最後の列を探す col = ws.Cells(5, ws.Columns.Count).End(xlToLeft).Column ' 空白列の左隣の列を探す For col = 1 To ws.Columns.Count If WorksheetFunction.CountA(ws.Columns(col)) = 0 Then ' 空白列の左隣の列の5行目から最後の行までを取得 lastRow = ws.Cells(ws.Rows.Count, col - 1).End(xlUp).Row Set rng = ws.Range(ws.Cells(5, col - 1), ws.Cells(lastRow, col - 1)) Exit For End If Next col ' データを配列に格納 data = rng.Value ' 配列内のデータをランダムに並べ替え For i = 1 To UBound(data, 1) j = Int((UBound(data, 1) - 1 + 1) * Rnd + 1) ' ランダムなインデックス temp = data(i, 1) data(i, 1) = data(j, 1) data(j, 1) = temp Next i ' 並べ替えたデータをシートに戻す rng.Value = data End Sub このマクロの並べ替える条件に以下3つを加えてほしいです。 ①sheet並べ替え表のA列の文字と同じにならないように並び替える。例えばA列5行目がAの場合は以降の列の5行目にはA以外の文字にする。 ②並び替える際、左隣のセルと別の文字になるように並び替える。例えばC列5行目がAの場合、D列5行目はカレー以外の文字になるように並び替える。 ③連続する行で同じ文字にならないように並び替える。例えば、D列5行目がAの場合、D列6行目はA以外の文字になるようにする。
Visual Basic