Как сложить 2 столбца данных с пробелами в один столбец без пробелов - PullRequest
0 голосов
/ 05 мая 2019

У меня есть 2 столбца данных по 40 строк в каждом (AD2: AE42).Некоторые строки будут пустыми в зависимости от ввода пользователя.Как мне сложить 2 столбца в один столбец без пробелов, начинающихся с AC2?

Это необходимо делать каждый раз, когда флажок на другом листе отмечен или снят.Пользователь никогда не увидит этот лист.

Формулы и VBA-решения приветствуются.

Row        AC       AD      AE    <----Columns
1      FinalList   List1   List2  <----Headers
2      Bob         Bob     Steve
3      Jim         Jim     Larry
4      Mary        Mary
5      Steve
6      Larry
8-40

1 Ответ

0 голосов
/ 05 мая 2019

Для простого VBA выполните цикл по ячейкам, проверьте, не заполнено ли оно, и переместите значение.

For Each c In Range("AD2:AE42")
    If Not c.Value = "" Then Range("AC" & Cells(Rows.Count, 29).End(xlUp).Offset(1, 0).Row).Value = c.Value
Next c

Это будет происходить слева направо.

Для цикла по каждому столбцу, вы можете сделать что-то вроде:

For i = 30 To 31
    For Each c In Range(Cells(2, i), Cells(42, i))
        If Not c.Value = "" Then Range("AC" & Cells(Rows.Count, 29).End(xlUp).Offset(1, 0).Row).Value = c.Value
    Next c
Next i

edit Для использования на другом рабочем листе:

Dim ws As Worksheet, c As Range
Set ws = Worksheets("Data")
For Each c In ws.Range("AD2:AE42")
    If Not c.Value = "" Then ws.Range("AC" & ws.Cells(Rows.Count, 29).End(xlUp).Offset(1, 0).Row).Value = c.Value
Next c

или

Dim ws As Worksheet, i As Long, c As Range
Set ws = Worksheets("Data")
For i = 30 To 31
    For Each c In Range(ws.Cells(2, i), ws.Cells(42, i))
        If Not c.Value = "" Then ws.Range("AC" & ws.Cells(Rows.Count, 29).End(xlUp).Offset(1, 0).Row).Value = c.Value
    Next c
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...