|
Расписание
|
|||
---|---|---|---|
#18+
Добрый день всем! Возникла некая проблема. У меня есть рассписание вылета самолётов, по которому я веду некий отчет. Но на некоторых направлениях есть начало и окончание навигации по датам, разное время прибытия по разным дням недели. Необходимо исходя из даты вылета, номера вылетающего рейса, дня недели вылета в столбец "Дата прибытия" подставить время прибытия рейса. Перепробовал все возможные варианты написания функции "ЕСЛИ", но к сожалению написать грамотно не удалось. Может кто подскажет что, в каком направление двигаться или какая функция ещё могла бы помочь. Пример во вложении. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 20:42 |
|
Расписание
|
|||
---|---|---|---|
#18+
Одной ЕСЛИ тут не обойдешься. Вообще, проще было бы макросом-циклом или через SQL-запрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 22:26 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev, так надо? Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 22:53 |
|
Расписание
|
|||
---|---|---|---|
#18+
Не, не так. Еще надо учитывать дни недели. к примеру рейс УН 141 у тебя получился 6:55 как сумма двух времен прибытия 12:30+18:25 а надо только одно выбрать, соответствующее дню недели в общем, еще чуть-чуть и ключик наш ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 23:05 |
|
Расписание
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо, я сначала не понял при чём здесь день недели :) Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 23:26 |
|
Расписание
|
|||
---|---|---|---|
#18+
Добавил проверку на отсутствие заявленного рейса и включил пограничные даты ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 23:33 |
|
Расписание
|
|||
---|---|---|---|
#18+
Не в первый раз восхищен твоим мышлением. Легкость составления подобных формул достигается только просветлением, это не просто опыт. Мне знакомо это по SQL, на SQL я напишу подобный запрос с легкостью, но мне потребовалось не менее года работы с SQL, чтобы в какой-то момент почувствовать это просветление, когда ты начинаешь просто мыслить другими категориями, думать на другом языке. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2012, 23:47 |
|
Расписание
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2012, 00:11 |
|
Расписание
|
|||
---|---|---|---|
#18+
Приветствую, Serge 007! Спасибо за формулу, вроде работает. Но есть маленькое НО. Как можно к получившемуся значению прикрепить любой знак, например "+1". Не спрашивай зачем, долго объяснять, но очень надо. Готов прислать в знак благодарности на шоколадку или на что покрепче))). С уважением, Алексей! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2013, 19:20 |
|
Расписание
|
|||
---|---|---|---|
#18+
talevк получившемуся значению прикрепить любой знак, например "+1" Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2013, 19:25 |
|
Расписание
|
|||
---|---|---|---|
#18+
значение времени, которое подставляет формула меняется на числовое значение. Вот в этом и беда. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2013, 19:33 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev , Вы внятно объяснить задачу можете? Например так: В ячейке А1 формула, которая возвращает число 5. Надо к ней добавить текст "+1", что бы получилось "5+1" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2013, 20:08 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev, Код: vbnet 1.
Как я понимаю, там не один знак надо добавлять... Надо же указывать, что рейс прилетает на следующий день, в другой часовой пояс и т.п. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 10:15 |
|
Расписание
|
|||
---|---|---|---|
#18+
AndreTM, точно так. Как таковой часовой пояс не надо рассчитывать, а +1 означает, что рейс прибывает следующим числом. Прицепить к значению я могу, проблема в том, что полученный результат из первой формулы (=ЕСЛИ(ЕНД(ВПР(A22;Расписание!E$3:E$78;1;));"нет рейса";СУММПРОИЗВ((A22=Расписание!E$3:E$78)*(Расписание!G$3:G$78<=B22)*(B22<=Расписание!H$3:H$78)*(ТЕКСТ(ДЕНЬНЕД(B22;2);0)=Расписание!I$3:O$78)*Расписание!Q$3:Q$78)), а именно формат времени, "прицеп" переводит в число - "0,694444444444445+1". Если поставить +1 в листе Расписание изначально во времени прибытия, соответственно формула уже не считает. Пробовал условным форматированием, но либо голова не там растет, либо руки. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 12:14 |
|
Расписание
|
|||
---|---|---|---|
#18+
Наконец-то понятно стало что Вам нужно Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 15:03 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev +1 означает, что рейс прибывает следующим числом.Это (добавку "+1"), кстати, тоже можно рассчитывать, чтобы не напрягаться... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 15:27 |
|
Расписание
|
|||
---|---|---|---|
#18+
Чисто технически, если мы в конце формулы ставим &Расписание!T$3:T$78 а не &"+1", формула должна подтягивать то значение, которое указано в диапазоне T$3:T$78? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 17:32 |
|
Расписание
|
|||
---|---|---|---|
#18+
[/quot]Это (добавку "+1"), кстати, тоже можно рассчитывать, чтобы не напрягаться...[/quot] Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 19:23 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev, "Чисто технически" - получится примерно такое (подчёркивания уберите): Код: vbnet 1. 2. 3. 4. 5.
Но, по идее, надо бы вообще расписание задать именованным диапазоном и работать через имя. Кроме того, поскольку в "Отчёт" могут потребоваться данные из расписания не один раз (как видно выше) - то на листе с отчётом можно вычислить в отдельном столбце порядковый номер соответствующей строки расписания ( индекс , так сказать), а затем уже брать нужные значения с помощью =ИНДЕКС() и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 20:00 |
|
Расписание
|
|||
---|---|---|---|
#18+
AndreTM, При сравнении полученного результата с 0 (<0;" +1";""), эффекта нет, я поставил сравнить время 0:00 (<"0:00";" +1";""), "+1" ставиться, но уже по всем строкам, где в принципе не должна. Как результат проверки лист "Отчет", строка 35. В листе Расписание поставил в столбец R значение "+1" напротив того времени, где собственно это должно отображаться. Первоначальная формула, исходя из заданных параметров находит окончательное время вылета, следующей формулой мы пытаемся это время сравнить с нулями. На мой взгляд это не верно. Любое время будет больше нулей. Если конечно я правильно прочитал формулу. И про именованный диапазон я не совсем понял. Если в отчете необходимо для решения добавить столбец для индексирования, не вопрос, но у нас переменные данные для поиска значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 21:32 |
|
Расписание
|
|||
---|---|---|---|
#18+
AndreTM, пост отправлял, не увидел обновленный с вложением. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 21:36 |
|
Расписание
|
|||
---|---|---|---|
#18+
AndreTM, Благодарю, вроде бы работает. Правильность подстановки данных проверю уже завтра, единственное сейчас нашел один недочет. Залил в файл полное расписание и реальные вылетные данные. На некоторых рейсах ставит время 0:00, хотя время прибытия другое. И если можно, поясни пожалуйста, в чем будет польза проиндексированных столбцов для отчета? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2013, 22:31 |
|
Расписание
|
|||
---|---|---|---|
#18+
talev, 1) Ну, залил ты данные - а именованный диапазон "Расп" изменил (Вставка-Имя-Присвоить...)? Что касается нулей - три формулы одновременно врать не могут! Смотрим: Отчет: "СУ 1484", 05.04.2013 <-> Расписание: Навигация с 31.03.2013 по 31.03.2013 Отчет: "ЮТ 345", 03.04.2013 <-> Расписание: Навигация с 31.03.2013 по 26.03.2013 продолжать? 2) В чём польза? Из примера не видно (я же специально второй столбец с "Направлениями" показал)? Или ты не понимаешь, что выражение ИНДЕКС(<массив>;<строка>;<столбец>) - это прямая ссылка на значение в ячейке, а не вычисления? Все вычисления по сравнениям значений в диапазонах производятся только в столбце "Индекс", остальные столбцы используют конкретные значения. 3) Зачем держать в файле все формулы? Комп же на пересчетах повесится... Ты уж определись, каким методом будешь пользоваться - и остальные убери. Причем желательно не "стирать" значения а удалять целиком столбцы/строки. Также не надо расширять формулы "с запасом" вниз. И что это у тебя автофильтр посреди таблицы наложен? 4) Также неплохо бы ещё поправить/упростить формулы. Например, жестокие преобразования выполняются при проверке дня недели - и только из-за того, что в "Расписании" мало того, что день недели в своём столбце дублирован цифрой, и эта цифра в виде текста - так и в других днях точки стоЯт... Нельзя ли просто дни записывать цифрой-числом, а пустые ячейки - не заполнять? И надо будет попробовать дни недели в битовую маску перевести... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2013, 06:48 |
|
|
start [/forum/topic.php?fid=61&msg=38267236&tid=2174793]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 126ms |
0 / 0 |