Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Найти в скрытых столбцах последний не пустой столбец в конкретной строке., Как найти последний не пустой столбец в строке если столбцы скрыты?
 
Дорогие форумчане подскажите пожалуйста как найти в скрытых столбцах последний не пустой столбец в конкретной строке?
Этот код находит последний по всему листу, а мне нужно только в одной строке.
Код
clm = shm.Cells(2, shm.UsedRange.Columns.Count).End(xlToLeft).column


Заранее благодарю! Уже все перепробовала, везде поискала:(
Изменено: bekzus - 7 июн 2018 19:20:31
 
Цитата
а мне нужно только в одной строке.
Код
clm = Cells(3, Columns.Count).End(xlToLeft).Column
 
Спасибо Kuzmich, но этот код выдает последний видимый столбец, а мне нужен скрытый.
 
Цитата
bekzus написал:
как найти в скрытых столбцах
тут кроме перебора ничего в голову не приходит, если конечно правее в не скрытых столбцах что-то есть.
А если нет, то
Код
clm = Application.Evaluate("=LOOKUP(2,1/(" & shm.Name & "!2:2<>""""),COLUMN(2:2))")
По вопросам из тем форума, личку не читаю.
 
для 3-ей строки:
Код
Lastcol = Application.Max(Application.IfError(Application.Match(9E+307, Range("3:3"), 1), 0), Application.IfError(Application.Match("", Range("3:3"), -1), 0))
 
Спасибо БМВ! Код работает отлично. А если строка переменная и она может меняться? Например MyRow вместо конкретной 2 строки?
 
Eco, спасибо, но ваш код не выдает столбец. Не знаю может я что то делаю не так.
 
Цитата
bekzus написал:
а мне нужен скрытый.
ну судя по этому  - перебор используемой области строки с проверкой на видимость.

Код
With shm
Set Rng = Intersect(.Rows(MyRow), .UsedRange)
If Not Rng Is Nothing Then
For Each cell In Rng
    If .Columns(cell.Column).Hidden And cell <> "" Then clm = cell.Column
Next
End If
End With
Изменено: БМВ - 7 июн 2018 20:04:41
По вопросам из тем форума, личку не читаю.
 
Файл с возможностью назначения строки
 
БМВ!!! Супер! Все работает! Спасибо Вам огромное! :) Дай Вам бог здоровья!
 
Спасибо Есо! Теперь и ваш код делает то что нужно! А какой теперь использовать не знаю:) А который быстрее должен работать?
 
Мой код ищет быстро, но не только в скрытых, но и в нескрытых столбцах.
 
Цитата
bekzus написал:
А который быстрее должен работать?
постаьте в файл  Eco, что либо в J4  И поймете что не в скорости дело а в правильности
я изменил чуть  код выше. вставил MyRow
По вопросам из тем форума, личку не читаю.
 
Есо, сорри, но почему то в скрытых не получается:( Почему?
 
bekzus, Надо Ваш файл глядеть.
Но я выше написал. что код ищет не только в скрытых столбцах, но и видимых.
Изменено: Eco - 7 июн 2018 20:13:52
 
Спасибо БМВ, Eco! Вы мне очень помогли! Дай вам бог здоровья! :*
 
скорее всего быстрее будет так
Код
With shm
    On Error Resume Next
    Set Rng = .Rows(MyRow).SpecialCells(xlCellTypeConstants)
    If Not Rng Is Nothing Then Set Rng = Union(Rng, .Rows(MyRow).SpecialCells(xlCellTypeFormulas))
    On Error GoTo 0
    If Not Rng Is Nothing Then
        For Each cell In Rng
            If .Columns(cell.Column).Hidden And cell <> "" Then clm = cell.Column
        Next
    End If
End With
По вопросам из тем форума, личку не читаю.
 
Можно еще так попробовать:
Код
dim arr, res_col as long
With shm
    'вычисляем последний видимый столбец со значением
    clm = .Cells(MyRow, .Columns.Count).End(xlToLeft).column
    'запоминаем все значения строки
    arr = .Rows(MyRow,1).Value
    'цикл от конца строки до последнего видимого столбца
    For lc = Ubound(arr,2) to clm
         If arr(1,lc) <> "" Then res_col = lc:exit for
    Next
    if res_col = 0 then res_col = clm
End With
Но если бы был пример данных - было бы лучше :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Читают тему (гостей: 1)
Наверх