1

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
4

1 に答える 1