VBAを使うのは初めてです。任意の数の行と固定の 4 列でセルのグリッドにデータを生成しています。行が固定されていないことに注意してください。たとえば、データが B17 から E20 (4x4 グリッド) のグリッドにある場合や、B17 から E25 (4x9 グリッド) に変化する場合があります。
現在、グリッド内のすべてのエントリにデータが含まれているわけではなく、一部は空白のままです。
だから私の問題は、グリッド内のすべてのエントリを「;」で区切られたExcelの1つのセルにリストしたいということです
論理ステートメントを使用して空白セルを省略する必要があると思いますが、文字列でそれらを使用する方法がわかりません。また、行数が変わるため、すべてをループ内に配置する必要があります。しかし、& 演算子を使用してコンテンツを 1 つの Excel に生成しようとするとすぐに、コンテンツが上書きされます。
完全なマクロについては、以下のコードと、それを機能させるために灰色のセルに入力する必要があるデータの添付のスクリーンショットを参照してください。
私の投稿は「ウェブサイトギャラリーの画像」セクションを参照しています...
Sub Combo()
'
' Combo Colours Sizes
'
MaxColours = Range("f3")
MaxSizes = Range("h3")
RowOffset = 3
Col1 = 1
Col2 = 7
Col3 = 9
Col4 = 10
Col5 = 12
Col6 = 13
CurRow = 4
' Generate Simple Images for all Colours and Sizes
For I = 1 To MaxColours
For J = 1 To MaxSizes
Cells(CurRow, Col3).Value = Cells(RowOffset + I, Col1).Value
Cells(CurRow, Col4).Value = Cells(RowOffset + J, Col2).Value
Cells(CurRow, Col5) = Range("f1") & "-" & Cells(CurRow, Col3).Value & "-" & Cells(CurRow, Col4).Value
UpperColour = Cells(RowOffset + I, Col1)
LowerColour = LCase(UpperColour)
For K = 0 To 3
Cells(CurRow, Col6 + K) = "/" & LowerColour & "c.jpg"
Next K
CurRow = CurRow + 1
Next J
Next I
Cells(CurRow, Col5).Value = Range("f1")
Cells(CurRow + 1, Col5).Value = Range("f1") & "-M"
CurRowTwo = 4
' Generate Available Images
For N = 1 To MaxColours
For O = 1 To 4
Colour = Cells(RowOffset + N, Col1)
Image = Cells(RowOffset + N, Col1 + O)
If Image <> "" Then
Cells(CurRowTwo + N + 12, Col1 + O).Value = "/" & LCase(Colour) & LCase(Image) & ".jpg"
Else
Cells(CurRowTwo + N + 12, Col1 + O).Value = ""
End If
Next O
Next N
' Website Config
' Images in first 3 columns
For L = 1 To 3
Cells(CurRow, Col5 + L) = "/" & Range("h17")
Next L
' Images in Website Media Gallery
CurRowTwo = 4
Cells(CurRow, Col5 + 4).Value = Cells(CurRowTwo + MaxColours + 9, Col1 + 1) & "; " & Cells(CurRowTwo + MaxColours + 9, Col1 + 2) & "; " & Cells(CurRowTwo + MaxColours + 9, Col1 + 3) & "; " & Cells(CurRowTwo + MaxColours + 9, Col1 + 4) & "; " & Cells(CurRowTwo + MaxColours + 10, Col1 + 1) & "; " & Cells(CurRowTwo + MaxColours + 10, Col1 + 2) & "; " & Cells(CurRowTwo + MaxColours + 10, Col1 + 3) & "; " & Cells(CurRowTwo + MaxColours + 10, Col1 + 4) & "; " & Cells(CurRowTwo + MaxColours + 11, Col1 + 4) & "; " & Cells(CurRowTwo + MaxColours + 11, Col1 + 4) & "; " & Cells(CurRowTwo + MaxColours + 11, Col1 + 4) & "; " & Cells(CurRowTwo + MaxColours + 11, Col1 + 4)
' Marketplace Config
' Images in first 3 columns
For M = 1 To 3
Cells(CurRow + 1, Col5 + M) = "/" & Range("h19")
Next M
End Sub