Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Поиск данных через Do While - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск данных через Do While (Макросы/Sub)
Поиск данных через Do While
Паштет Дата: Пятница, 22.02.2019, 14:54 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Добрый день!
Для статистики, сделал форму для определения рельсовой цепи от расстояния. Все бы хорошо, но только первую цепь перегона упорно не хочет определять, оставляя пустоту. Определение идет через следующий код:
[vba]
Код
i = 1
    Do While Sheets("Перегоны").Cells(i, 3) <> 0
    If Val(Sheets("Перегоны").Cells(i, 4)) < Val(s) And Sheets("Перегоны").Cells(i, 1) = peregon Then
        
        rc = Sheets("Перегоны").Cells(i, 3)
        End If
        i = i + 1
    
    Loop
[/vba]
Данный кусок специально большими пропусками выделил в прилагаемом файле. Макрос для формы ALS.
К сообщению приложен файл: 5066413.xlsm(70.6 Kb)
 
Ответить
СообщениеДобрый день!
Для статистики, сделал форму для определения рельсовой цепи от расстояния. Все бы хорошо, но только первую цепь перегона упорно не хочет определять, оставляя пустоту. Определение идет через следующий код:
[vba]
Код
i = 1
    Do While Sheets("Перегоны").Cells(i, 3) <> 0
    If Val(Sheets("Перегоны").Cells(i, 4)) < Val(s) And Sheets("Перегоны").Cells(i, 1) = peregon Then
        
        rc = Sheets("Перегоны").Cells(i, 3)
        End If
        i = i + 1
    
    Loop
[/vba]
Данный кусок специально большими пропусками выделил в прилагаемом файле. Макрос для формы ALS.

Автор - Паштет
Дата добавления - 22.02.2019 в 14:54
_Boroda_ Дата: Пятница, 22.02.2019, 15:33 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15577
Репутация: 6079 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не совсем понятно что где нужно определить
Не поможет ли замена ", 1" на ", 2" вот здесь
[vba]
Код
iLastRow = .Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]
К сообщению приложен файл: 5066413_1.xlsm(61.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНе совсем понятно что где нужно определить
Не поможет ли замена ", 1" на ", 2" вот здесь
[vba]
Код
iLastRow = .Cells(Rows.Count, 2).End(xlUp).Row + 1
[/vba]

Автор - _Boroda_
Дата добавления - 22.02.2019 в 15:33
Паштет Дата: Пятница, 22.02.2019, 19:52 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Нет. Не то.
На листе "Перегоны" указано расстояние до границы рельсовой цепи от начальной станции перегона.
В ходе заполнения формы ALS мы получаем расчетное расстояние местоположения состава, которое хранится в переменной s.
Так вот, мы должны подставить соответствующее название рельсовой цепи из таблицы "Перегоны" столбец С, попадающий в диапазон расстояний в столбце D. К примеру, получили мы 10 метров на перегона Самолетная - Взлетная, то РЦ должно быть 503. Получили 52 - соответственно 503а, 111 - 501 и и т.д.
 
Ответить
СообщениеНет. Не то.
На листе "Перегоны" указано расстояние до границы рельсовой цепи от начальной станции перегона.
В ходе заполнения формы ALS мы получаем расчетное расстояние местоположения состава, которое хранится в переменной s.
Так вот, мы должны подставить соответствующее название рельсовой цепи из таблицы "Перегоны" столбец С, попадающий в диапазон расстояний в столбце D. К примеру, получили мы 10 метров на перегона Самолетная - Взлетная, то РЦ должно быть 503. Получили 52 - соответственно 503а, 111 - 501 и и т.д.

Автор - Паштет
Дата добавления - 22.02.2019 в 19:52
Паштет Дата: Вторник, 26.02.2019, 16:11 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Обыграл следующем образом:
[vba]
Код
i = 2
    Do While Sheets("Перегоны").Cells(i, 3) <> 0
    If Val(Sheets("Перегоны").Cells(i, 4)) < Val(s) And Sheets("Перегоны").Cells(i, 1) = peregon Then
        rc = Sheets("Перегоны").Cells(i + 1, 3)
        End If
        If rc = 0 And Sheets("Перегоны").Cells(i, 1) = peregon Then
        rc = Sheets("Перегоны").Cells(i, 3)
        End If
       i = i + 1
    Loop
[/vba]
 
Ответить
СообщениеОбыграл следующем образом:
[vba]
Код
i = 2
    Do While Sheets("Перегоны").Cells(i, 3) <> 0
    If Val(Sheets("Перегоны").Cells(i, 4)) < Val(s) And Sheets("Перегоны").Cells(i, 1) = peregon Then
        rc = Sheets("Перегоны").Cells(i + 1, 3)
        End If
        If rc = 0 And Sheets("Перегоны").Cells(i, 1) = peregon Then
        rc = Sheets("Перегоны").Cells(i, 3)
        End If
       i = i + 1
    Loop
[/vba]

Автор - Паштет
Дата добавления - 26.02.2019 в 16:11
_Boroda_ Дата: Вторник, 26.02.2019, 16:27 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 15577
Репутация: 6079 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Павел, почитайте про оператор With https://u.to/eiDHFA
У Вас прямо просится
[vba]
Код
    With Sheets("Перегоны")
        Do While .Cells(i, 3) <> 0
            If Val(.Cells(i, 4)) < Val(s) And .Cells(i, 1) = peregon Then
                rc = .Cells(i + 1, 3)
                End If
                If rc = 0 And .Cells(i, 1) = peregon Then
                rc = .Cells(i, 3)
                End If
            i = i + 1
        Loop
    End With
[/vba]

* А остальное все равно по-прежнему непонятно. Не знаю, может, это я просто торможу...


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПавел, почитайте про оператор With https://u.to/eiDHFA
У Вас прямо просится
[vba]
Код
    With Sheets("Перегоны")
        Do While .Cells(i, 3) <> 0
            If Val(.Cells(i, 4)) < Val(s) And .Cells(i, 1) = peregon Then
                rc = .Cells(i + 1, 3)
                End If
                If rc = 0 And .Cells(i, 1) = peregon Then
                rc = .Cells(i, 3)
                End If
            i = i + 1
        Loop
    End With
[/vba]

* А остальное все равно по-прежнему непонятно. Не знаю, может, это я просто торможу...

Автор - _Boroda_
Дата добавления - 26.02.2019 в 16:27
Паштет Дата: Вторник, 26.02.2019, 21:24 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 106
Репутация: 1 ±
Замечаний: 0% ±

Excel 2010
Boroda, спасибо, что напомнили про With. Про него знаю и применяю, только здесь проглядел.

Ох... Грубо говоря, путь от станции до станции порезан на участочки - РЦ, которые имеют свое обозначение. В таблице "Перегоны" надо сопоставить название РЦ между расстояниями конца текущей РЦ и предыдущей, в зависимости от место положения состава.
 
Ответить
СообщениеBoroda, спасибо, что напомнили про With. Про него знаю и применяю, только здесь проглядел.

Ох... Грубо говоря, путь от станции до станции порезан на участочки - РЦ, которые имеют свое обозначение. В таблице "Перегоны" надо сопоставить название РЦ между расстояниями конца текущей РЦ и предыдущей, в зависимости от место положения состава.

Автор - Паштет
Дата добавления - 26.02.2019 в 21:24
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поиск данных через Do While (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2019 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!