Сортировка данных из одного столбца - PullRequest
0 голосов
/ 05 мая 2018

Я пытаюсь создать базовый макрос, который будет сортировать мои данные:

Sub Makro1()

Range("N1").Select
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
Range("N2").Select
Application.CutCopyMode = False
Selection.Copy
Range("D2").Select
ActiveSheet.Paste
Range("N3").Select
Application.CutCopyMode = False
Selection.Copy
Range("C2").Select
ActiveSheet.Paste

Мои данные содержат N столбцов, и одна запись занимает 3 ячейки, которые я хотел бы скопировать в одну строку, как указано выше.

Теперь я бы хотел, чтобы VBA продолжал копировать до тех пор, пока не закончатся данные в столбце N.

То есть N4 - A3, N5 - C3 и так далее.

Я довольно новичок в VBA.

Спасибо!

1 Ответ

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

Как это?

Public Sub testing()
    Dim i As Long
    Application.ScreenpUpdating  = False
    With ActiveSheet
        For i = 1 To .Cells(.Rows.Count, "N").End(xlUp).Row Step 3
            .Cells(i + 1, "A") = .Cells(i, "N")
            .Cells(i + 1, "D") = .Cells(i + 1, "N")
            .Cells(i + 1, "C") = .Cells(i + 2, "N")
        Next i
    End With
    Application.ScreenpUpdating  = True
End Sub

Преобразует столбец N влево, как показано:

data

Вы можете удалить или скрыть пустые строки столбца A с помощью

.Range(.Cells(2, "A"), .Cells(.Cells(.Rows.Count, "N").End(xlUp).Row, "A")).SpecialCells(xlBlanks).Delete

или

.Range(.Cells(2, "A"), .Cells(.Cells(.Rows.Count, "N").End(xlUp).Row, "A")).SpecialCells(xlBlanks).EntireRow.Hidden = True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...