Excel VBA - объединить через - PullRequest
       9

Excel VBA - объединить через

1 голос
/ 21 февраля 2012

У меня сложная ситуация. У меня есть столбец A только с заголовками, а столбец B содержит текст. Теперь я хотел бы, чтобы текст из столбца B начинался в столбце A. Если в столбце A есть текст, B всегда будет пустым.

A            B
Title 1
             Text 1
             Text 2
Title 2
             Text 1
             Text 2

Как я могу получить его, чтобы текст в столбце B помещался в столбец A. Диапазон устанавливается до тех пор, пока не будет найдена полная пустая строка. (От А1 до S1 нет значений в ячейках = пустая строка) Я думал о слиянии клеток, но это, возможно, не опрятно.

1 Ответ

1 голос
/ 21 февраля 2012

Как это?Это использует слияние, а также учитывает, где заполнены A и B.

Sub Sample()
    Dim ws As Worksheet
    Dim LastRow As Long

    Set ws = Sheets("Sheet5")

    With ws
        LastRow = .Range("B" & .Rows.Count).End(xlUp).Row

        For i = 1 To LastRow
            If Application.WorksheetFunction.CountA(.Range("A" & i & ":" & "B" & i)) = 1 And _
            Len(Trim(.Range("A" & i).Value)) = 0 Then
                With .Range("A" & i & ":" & "B" & i)
                    .Merge
                End With
            End If
        Next i
    End With
End Sub

СЛЕДУЙТЕ ЗА

Если вы не хотите слияния, и Aвсегда оставайтесь пустыми, когда есть значение в B, тогда мы можем переместить значение из Col B в Col A следующим образом:

Sub Sample()
    Dim ws As Worksheet
    Dim LastRow As Long

    Set ws = Sheets("Sheet5")

    With ws
        LastRow = .Range("B" & .Rows.Count).End(xlUp).Row

        For i = 1 To LastRow
            If Len(Trim(.Range("A" & i).Value)) = 0 Then
                .Range("A" & i).Value = .Range("B" & i).Value
                .Range("B" & i).ClearContents
            End If
        Next i
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...