Как использовать VBA для генерации таблицы Excel - PullRequest
0 голосов
/ 30 января 2019

Я новичок в VBA.Как я могу использовать VBA для генерации таблицы на основе данных из другой таблицы?Например: сгенерировать table2 из table1, где я получу все возможные комбинации для ключа Color;

таблица 1 состоит из: цвет, модель, год.

В таблице 2 я хочу сгенерировать все возможные комбинации для цвет + модель + год

excel sheet screenshot

Мне удается написать этот код

Sub generatedinput() 
    Dim listA As Range
    Dim listB As Range
    Dim listC As Range

    Range("D11:F999").Clear

    Set listA = Range("I11", Range("I11").End(xlDown))
    Set listB = Range("J11", Range("J11").End(xlDown))
    Set listC = Range("K11", Range("K11").End(xlDown))

    y = 11

    For Each cellA In listA
        For Each cellB In listB
            For Each cellC In listC
                Cells(y, 4).Value = cellA.Value
                Cells(y, 5).Value = cellB.Value
                Cells(y, 6).Value = cellC.Value
                y = y + 1
            Next
        Next
    Next
End Sub

Но генерирует также и для пустых ячеек.Как пропустить пустые ячейки?

1 Ответ

0 голосов
/ 31 января 2019

Это немного уродливо, но оно выполняет свою работу.Ваш код близок, вам просто нужно проверить пустые ячейки.

Public Sub MakeComboTable()

    Dim rColor As Range
    Dim rModel As Range
    Dim rYear As Range
    Dim lCnt As Long

    For Each rColor In Sheet1.Range("G4:G11").Cells
        If Not IsEmpty(rColor.Value) Then
            For Each rModel In Sheet1.Range("H4:H11").Cells
                If Not IsEmpty(rModel.Value) Then
                    For Each rYear In Sheet1.Range("I4:I11").Cells
                        If Not IsEmpty(rYear.Value) Then
                            lCnt = lCnt + 1
                            Sheet1.Range("B1").Offset(lCnt, 0).Value = rColor.Value
                            Sheet1.Range("B1").Offset(lCnt, 1).Value = rModel.Value
                            Sheet1.Range("B1").Offset(lCnt, 2).Value = rYear.Value
                        End If
                    Next rYear
                End If
            Next rModel
        End If
    Next rColor

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...