Страницы: 1
RSS
VBA:Поиск последней заполненной строки
 
Всем привет!

Нужна помощь в вопросе поиска последней заполненной строки.
У меня есть периодические выгрузки, которые я обрабатываю макросом. Там мне нужна инфо о последней заполненной строчке.
Проблема в том, что в некоторых выгрузках после последней строчки с текстом есть всегда три ячейки с пробелом внутри. При определении посл.строки через Find, End или другие методы захватываются и ячейки с пробелами, а они не нужны).
Каким методом можно определить последнюю заполненную строку минуя ячейки ниже с пробелом?

Буду благодарен за советы. Спасибо!
 
Андрей Черкасов, файл пример. Как есть и что не захватывать выделите заливкой, например.

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
замените  на листе пробел (точное совпадение) на ничего (раз они вам не нужны)
а потом ищите последнюю заполненную
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Пример смогу вечером скинуть только. Образно пока опишу  :sceptic:

Есть данные в ячейках (A1:A20) - их надо выделять. Но в некоторых выгрузках в ячейках (A21:A23) стоят пробелы, и при определении диапазона он захватывает A1:A23, а надо A1:A20.
 
Код
Sub test()
    Dim myRange As Range
    Set myRange = GetLastCell(Columns(1))
    MsgBox myRange.Address(0, 0), vbInformation
End Sub

Function GetLastCell(rn As Range) As Range
    Dim cl As Range
    Set cl = rn.Cells(rn.Rows.Count, 1).End(xlUp)
    
    Dim arr As Variant
    If rn.Cells(1, 1).Row = cl.Row Then
        ReDim arr(1 To 1, 1 To 1)
        arr(1, 1) = cl.Value
    Else
        arr = Range(rn.Cells(1, 1), cl)
    End If
    
    Dim yy As Long
    For yy = UBound(arr, 1) To 2 Step -1
        If arr(yy, 1) <> " " Then Exit For
    Next
    Set GetLastCell = rn.Cells(yy, 1)
End Function
 
Андрей Черкасов, в каждой ячейке по одному пробелу, или там их может быть несколько, или в каждой ячейке произвольное кол-во пробелов?

Формула массива (ФМ) вводится Ctrl+Shift+Enter
Memento mori
 
Цитата
Андрей Черкасов: VBA:Поиск последней заполненной строки
здесь есть все варианты
Цитата
Андрей Черкасов: Каким методом можно определить последнюю заполненную строку минуя ячейки ниже с пробелом?
заменить эти ячейки на пустоту перед поиском строки
Изменено: Jack Famous - 18.05.2022 12:54:29
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
Андрей Черкасов, в каждой ячейке по одному пробелу, или там их может быть несколько, или в каждой ячейке произвольное кол-во пробелов?
По одному пробелу ровно
 
Цитата
написал:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24      Sub   test()          Dim   myRange   As   Range          Set   myRange = GetLastCell(Columns(1))          MsgBox myRange.Address(0, 0), vbInformation    End   Sub       Function   GetLastCell(rn   As   Range)   As   Range          Dim   cl   As   Range          Set   cl = rn.Cells(rn.Rows.Count, 1).  End  (xlUp)                   Dim   arr   As   Variant          If   rn.Cells(1, 1).Row = cl.Row   Then              ReDim   arr(1   To   1, 1   To   1)              arr(1, 1) = cl.Value          Else              arr = Range(rn.Cells(1, 1), cl)          End   If                   Dim   yy   As   Long          For   yy = UBound(arr, 1)   To   2   Step   -1              If   arr(yy, 1) <>   " "   Then   Exit   For          Next          Set   GetLastCell = rn.Cells(yy, 1)    End   Function   
 
Опробовал.Супер! То, что надо! Спасибо огромное!!! :)

Всем спасибо за отклик и помощь, решение нашлось)
Страницы: 1
Наверх