Здесь я пытаюсь скопировать данные с одного листа на другой, где мне нужно исключить один конкретный столбец из листа копирования.
Нравиться : Думаю, у меня есть 2 листа (с именами как «Комбинированный», «HSR») из HSR, мне нужно скопировать все данные в комбинированный лист, за исключением значений столбца «D».
Dim ws As Worksheet
Dim ColumnLetter As Variant
Set ws = Sheets("HSR")
Worksheets("HSR").Select
lr = Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
lr2 = Sheets("Combined").Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
ColumnLetter = Split(ws.Cells.Find(What: = "*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)
Range("A2:C" & lr).Copy Sheets("Combined").Range("A" & lr2 + 1)
Range("E2:ColumnLetter" & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)
End Sub
Я ожидаю, что на листе Combined я не должен получать значения, которые находятся в столбце D из листа HSR.
ColumnLetter
— переменная. Вы используете его как String
.
Изменять
Range("E2:ColumnLetter" & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)
к
Range("E2:" & ColumnLetter & lr).Copy Sheets("Combined").Range("D" & lr2 + 1)
Также несколько советов
lr = Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
и lr2 = Sheets("Combined").Cells.Find("*", , xlValues, , xlRows, xlPrevious).Row
дадут вам ошибку, если .Find
ничего не вернет. Обработайте это, как показано в .Найти и .НайтиNext
Избегайте использования .Select
. Вы можете увидеть Как избежать использования Select в Excel VBA
'@Siddharth Rout' Спасибо за ваше предложение и решение.