Пустые ячейки в середине моего xlDown

У меня есть код ниже:

Worksheets("L.NAM.M").Select
    Cells.Select
    Selection.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate
    **Range("A2").Select
    Range(Selection, Selection.End(xlDown)).Select**
    Selection.Copy
    Sheets("NewForecast").Select
    Range("K" & Rows.Count).End(xlUp).Offset(1).Select
    ActiveSheet.Paste

в Лысой строке я хотел бы найти последнюю строку с данными, но если у меня есть пустые ячейки в середине, он не будет копировать то, что после пустых ячеек. Я хочу скопировать все, даже пустые ячейки. иметь данных
Поэтому, если в диапазоне A2: A100, A41 пусто, я хочу, чтобы он продолжал идти до последних данных, а затем скопировать все, даже A41.
Есть идеи?

Метки

1 ответ

  1. вот небольшая ревизия вашего кода, чтобы придерживаться того, что он на самом деле делает, и вы запрашиваете:

    Worksheets("L.NAM.M").Select
    Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _
        xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
        xlNext, MatchCase:=False, SearchFormat:=False).Activate
    Range("A2", Cells(Rows.Count, "A").End(xlUp)).Copy
    Sheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1).PasteSpecial
    

    но

    • поиск «forecast_quarter» кажется бесполезным, так как вы вообще не используете эту ячейку

    • есть еще некоторые выбрать / активировать, которые следует избегать

      это можно сделать до тех пор, пока вы расскажете нам о прежней точке


    отредактируйте после некоторых мыслей о том, что вы действительно хотите сделать

    если вы когда-нибудь захотите:

    • копировать ячейки из » L. NAM.M «лист, начинающийся снизу с» forecast_quarter » до последнего не пустого листа в том же столбце

    • вставьте его в первую не пустую ячейку в столбце» K «листа» NewForecast»

    тогда попробуйте это:

    Sub main()
        With Worksheets("L.NAM.M")
            With .Cells.Find(What:="forecast_quarter", After:=ActiveCell, LookIn:= _
                xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
                xlNext, MatchCase:=False, SearchFormat:=False)
                .Parent.Range(.Offset(1), .Parent.Cells(Rows.Count, .Column).End(xlUp)).Copy Destination:=Worksheets("NewForecast").Range("K" & Rows.Count).End(xlUp).Offset(1)
            End With
        End With
    End Sub