Оператор VBA If / Else для копирования и вставки данных на основе количества столбцов - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь скопировать и вставить данные из одного и того же столбца (A) на нескольких листах в один столбец данных на конечном листе.

Код, который я использовал до сих пор, прекрасно работает, если естьэто более одной строки данных под строкой заголовка.

Лист отформатирован так, чтобы включать таблицу под данными, и если на листе имеется только одна строка данных, существующий код скопирует данные из ячейки A2до первой ячейки в таблице с данными (по сути, выполняя ctrl + shift + down).

Мне нужен оператор if для подсчета диапазона данных (может быть A2: A3), и если счет больше чем1 это скопировало бы все данные вниз по столбцу в первую пустую строку.Затем вставьте его в первую пустую строку в столбце A другого листа.В противном случае скопируйте ячейку A2 и вставьте ее в первую пустую строку в столбце A другого листа.

Sheets("Sheet1").Select
If Range("A2:A3").Count > 1 Then
    Range("A2",Range("A2").End(xlDown)).Copy Destination:=Sheets("QA").Range("A" & Rows.Count).End(xlUp).Offset(1)  
ElseIf Range("A2:A3").Count = 1 Then
    Range("A2").Copy  Destination:=Sheets("QA").Range("A" & Rows.Count).End(xlUp).Offset(1)
End If

1 Ответ

0 голосов
/ 03 октября 2018

Это будет работать.Вам действительно нужно проверить, есть ли у A3 данные.

With Worksheets("Sheet1")

    Dim source as Range
    If Len(.Range("A3")) then 
       Set source = .Range(.Range("A2"),.Range("A2").End(xlDown))
    Else
       Set source = .Range("A2")
    End If

End With

Dim dest as Range
Set dest = Worksheets("QA").Range("A" & Rows.Count).End(xlUp).Offset(1)

dest.Resize(source.Rows.Count,1).Value = source.Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...