Добрый день. Есть задача: на листе "Свод" есть таблица в которой есть три столбца (выделил зеленым), из которых нужно выбрать значения до последнего входящего и скопировать их на новый лист "Заполнить" в ячейку D3 по порядку (сначала из столбца B и до конца, потом из F, потом из J). При этом в столбцах (кроме столбца могут быть пропуски. Пробовал записью макроса, но не пойму как в том столбце куда вставлять выбирать последнее значение, после которого нужно вставлять. Пример во вложении.
Заранее благодарен.
Добрый день. Есть задача: на листе "Свод" есть таблица в которой есть три столбца (выделил зеленым), из которых нужно выбрать значения до последнего входящего и скопировать их на новый лист "Заполнить" в ячейку D3 по порядку (сначала из столбца B и до конца, потом из F, потом из J). При этом в столбцах (кроме столбца могут быть пропуски. Пробовал записью макроса, но не пойму как в том столбце куда вставлять выбирать последнее значение, после которого нужно вставлять. Пример во вложении.
Sub Tablica() Dim iLastRow As Long Dim iLR As Long Dim j As Integer Dim MyArr MyArr = Array(1, 6, 10) With Worksheets("Заполнить") .Columns("D").ClearContents .Cells(3, 4) = "Код" For j = 0 To UBound(MyArr) iLastRow = Cells(Rows.Count, MyArr(j)).End(xlUp).Row iLR = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(2, MyArr(j)), Cells(iLastRow, MyArr(j))).Copy .Cells(iLR, 4) Next End With End Sub
[/vba]
Запускать при активном листе "Свод" [vba]
Код
Sub Tablica() Dim iLastRow As Long Dim iLR As Long Dim j As Integer Dim MyArr MyArr = Array(1, 6, 10) With Worksheets("Заполнить") .Columns("D").ClearContents .Cells(3, 4) = "Код" For j = 0 To UBound(MyArr) iLastRow = Cells(Rows.Count, MyArr(j)).End(xlUp).Row iLR = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(2, MyArr(j)), Cells(iLastRow, MyArr(j))).Copy .Cells(iLR, 4) Next End With End Sub
Kuzmich, спасибо, но есть 1 ошибка. Может не ошибка, может быть я неправильно описал. Макрос подтягивает сначала в D3 на листе "Заполнить" ячейку B1, а нужны только значения. Но есть еще один момент, который я не описал: как сделать так, чтобы пропуски он не переносил? Чтобы только значения переносились, а если пропуск, то вставлялось следующее значение. В примере отобразил в столбце G.
Kuzmich, спасибо, но есть 1 ошибка. Может не ошибка, может быть я неправильно описал. Макрос подтягивает сначала в D3 на листе "Заполнить" ячейку B1, а нужны только значения. Но есть еще один момент, который я не описал: как сделать так, чтобы пропуски он не переносил? Чтобы только значения переносились, а если пропуск, то вставлялось следующее значение. В примере отобразил в столбце G.Serg_naum
Sub Tablica() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim j As Integer Dim MyArr MyArr = Array(1, 6, 10) With Worksheets("Заполнить") .Columns("D").ClearContents .Cells(3, 4) = "Код" For j = 0 To UBound(MyArr) iLastRow = Cells(Rows.Count, MyArr(j)).End(xlUp).Row iLR = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(2, MyArr(j)), Cells(iLastRow, MyArr(j))).Copy .Cells(iLR, 4) Next iLR = .Cells(.Rows.Count, 4).End(xlUp).Row For i = iLR To 4 Step -1 If IsEmpty(.Cells(i, 4)) Then .Cells(i, 4).Delete End If Next .Cells(3, 4).Delete End With End Sub
[/vba]
[vba]
Код
Sub Tablica() Dim i As Long Dim iLastRow As Long Dim iLR As Long Dim j As Integer Dim MyArr MyArr = Array(1, 6, 10) With Worksheets("Заполнить") .Columns("D").ClearContents .Cells(3, 4) = "Код" For j = 0 To UBound(MyArr) iLastRow = Cells(Rows.Count, MyArr(j)).End(xlUp).Row iLR = .Cells(.Rows.Count, 4).End(xlUp).Row + 1 Range(Cells(2, MyArr(j)), Cells(iLastRow, MyArr(j))).Copy .Cells(iLR, 4) Next iLR = .Cells(.Rows.Count, 4).End(xlUp).Row For i = iLR To 4 Step -1 If IsEmpty(.Cells(i, 4)) Then .Cells(i, 4).Delete End If Next .Cells(3, 4).Delete End With End Sub