Конкатат данных вверх в зависимости от значения в другом столбце - PullRequest
0 голосов
/ 26 марта 2019

У меня есть данные, как в столбце A и столбце B. Я хотел бы получить данные, как в столбце C.

возможно ли получить то же самое с помощью VBA?Я не могу зацикливаться вверх.

Заранее спасибо.

+----------+----------+----------+
| Column A | Column B | Column C |
+----------+----------+----------+
| a        |          |          |
| b        |          |          |
| c        |          |          |
| d        |        1 | a,b,c,d  |
| x        |          |          |
| y        |          |          |
| z        |        2 | y,z      |
| s        |          |          |
| d        |          |          |
| e        |        3 | s,d,e    |
+----------+----------+----------+

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Вы можете попробовать:

Option Explicit

Sub trst()

    Dim LastRow As Long, i As Long
    Dim str As String

    With ThisWorkbook.Worksheets("Sheet1")

         LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

         For i = 2 To LastRow

            If .Range("B" & i).Value = "" Then

                If str = "" Then
                    str = .Range("A" & i).Value
                Else
                    str = str & ", " & .Range("A" & i).Value
                End If

            Else

                .Range("C" & i).Value = str & ", " & .Range("A" & i).Value
                str = ""

            End If

         Next i

    End With

End Sub
0 голосов
/ 26 марта 2019

как то так

Sub v()

Dim r As Excel.Range
Dim l As Long
Dim lRows As Long
Dim lNum As Long

Set r = Range("a1:b10")

l = 1

Do Until l > r.Rows.Count

    lNum = r.Cells(l, 2).End(xlDown).Row
    lRows = (lNum - l) + 1
    r.Cells(lNum, 3).Value = _
        Join(Application.Transpose(r.Cells(l, 1).Resize(lRows, 1)), ",")
    l = lNum + 1

Loop

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