Копирование и вставка данных в выбранную строку

У меня есть код из моего рабочего кода, который копирует и вставляет данные из других Рабочих листов в один мастер-лист masterworkbooks. Код ниже позволяет мне копировать и вставлять данные из столбца BX в первую пустую строку столбца A и делать то же самое для столбца CC в первую пустую строку столбца B. Тем не менее, я хотел бы вставить столбец CC в колонку B (10). Как я могу это сделать?

lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row With copySheet.Range("BX2:BX" & lRow) pasteSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) .Resize(.Rows.Count, .Columns.Count) = .Value End With 'Determine last row of Column B in copySheet lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row With copySheet.Range("CC2:CC" & lRow) pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0) .Resize(.Rows.Count, .Columns.Count) = .Value End With 

Не могли бы вы показать мне, как я могу определить, сколько строк будет снято для копирования?

Изменить: теперь я хотел бы добавить условие if для другого столбца, который должен сказать:

если

столбец U в листе «данные» имеет значение ячейки «8636», тогда эти значения должны быть вставлены в столбец H в листе «КомКо» (пастовый лист); к следующей строке, поскольку я использовал код выше в части «с».

Else (Если значение в столбце H не равно 8636), тогда он должен вставить

значение внутри этого столбца в колонке G на листе «KomKo» (пастовый лист) с теми же предпочтениями, что и выше

,

Как я могу это сделать ?

Измените pasteSheet.Cells(Rows.Count, "B").End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value к этому pasteSheet.Range("B10").Resize(.Rows.Count, .Columns.Count) = .Value

************* ОТВЕТ НА ВОПРОСЫ ИЗОБРАЖЕНИЯ ****************
******* Добавлено maxR – самая высокая последняя строка из столбца H и G *******
Вы можете сделать что-то подобное, чтобы получить то, что вам нужно:

 Sub check8636values() Dim copySheet, pasteSheet As Worksheet Dim lRowU, lRowH, lRowG, maxR, i As Long 'Dont forget to change to the correct sheet names!!!! Set copySheet = ThisWorkbook.Sheets("data") Set pasteSheet = ThisWorkbook.Sheets("KomKo") lRowU = copySheet.Cells(copySheet.Rows.Count, "U").End(xlUp).Row For i = 1 To lRowU lRowG = pasteSheet.Cells(pasteSheet.Rows.Count, "G").End(xlUp).Row + 1 lRowH = pasteSheet.Cells(pasteSheet.Rows.Count, "H").End(xlUp).Row + 1 maxR = Application.Max(lRowG,lRowH) If copySheet.Cells(i, "U").Value = "8636" Then pasteSheet.Cells(maxR, "H").Value = copySheet.Cells(i, "U").Value pasteSheet.Cells(maxR, "Y").Value = copySheet.Cells(i, "T").Value Else pasteSheet.Cells(maxR, "G").Value = copySheet.Cells(i, "U").Value pasteSheet.Cells(maxR, "X").Value = copySheet.Cells(i, "T").Value End If Next i End Sub 

поскольку вы имеете дело только с диапазонами с одним столбцом, нет необходимости, чтобы блоки With-End With сокращали параметры метода Resize : просто используйте lRow для первого только

более того, поскольку вы не показываете, являются ли copySheet и pasteSheet copySheet и той же .Rows.Count , более безопасно ссылаться на них раньше .Rows.Count и предотвращать возникновение проблем из их исходной книги excel version

  'Determine last row of Column B in copySheet lRow = copySheet.Cells(copySheet.Rows.Count, 1).End(xlUp).Row pasteSheet.Cells(pasteSheet.Rows.Count, "A").End(xlUp).Offset(1, 0).Resize(lRow) = copySheet.Range("BX2:BX" & lRow).Value pasteSheet.Range("B10").Resize(lRow).Value = copySheet.Range("CC2:CC" & lRow).Value 
Давайте будем гением компьютера.