Добрый день. Давно не обращался с вопросом. Сейчас у меня есть реестр рейсов автомобилей за последние 3 года. Форма таблиц одинакова. Только во вкладке "путёвки" имеются номера путевых листов, которые нужно скопировать в основную таблицу соответственно машине и дате выезда. Т.е. нужно красный текст столбца А вкладки "путёвки" скопировать в столбец А вкладки "основная таблица". Использованная мной формула неверна, т.к. сравнивает даты лишь в одной ячейке. Существует ли одна из возможностей: 1. сначала воспользоваться формулой ВПР, а потом ЕСЛИ? Например, он ищет госномер автомобиля, а потом сравнивает дату. Если дата совпадает, то он копирует номер путёвки в нужную ячейку. 2. формулой определить дату (например, 01.01.2015), а потом применить функцию ВПР на все машины в этой дате? 3. Может быть есть более простой способ вставить ячейки столбца "номер путевого листа" из вкладки "путёвки" во вкладку
Премного благодарен за помощь.
Добрый день. Давно не обращался с вопросом. Сейчас у меня есть реестр рейсов автомобилей за последние 3 года. Форма таблиц одинакова. Только во вкладке "путёвки" имеются номера путевых листов, которые нужно скопировать в основную таблицу соответственно машине и дате выезда. Т.е. нужно красный текст столбца А вкладки "путёвки" скопировать в столбец А вкладки "основная таблица". Использованная мной формула неверна, т.к. сравнивает даты лишь в одной ячейке. Существует ли одна из возможностей: 1. сначала воспользоваться формулой ВПР, а потом ЕСЛИ? Например, он ищет госномер автомобиля, а потом сравнивает дату. Если дата совпадает, то он копирует номер путёвки в нужную ячейку. 2. формулой определить дату (например, 01.01.2015), а потом применить функцию ВПР на все машины в этой дате? 3. Может быть есть более простой способ вставить ячейки столбца "номер путевого листа" из вкладки "путёвки" во вкладку
ArkaIIIa, вроде бы эта формула возвращает номера путёвок, но почему-то они не соответствуют данным во вкладке "путёвка", где, например, 01 января 2013 г. МАН В 919 УС 190 имеет номер путёвки 007166, а в основном листе формула присвоила ему номер листа 007169.
ArkaIIIa, вроде бы эта формула возвращает номера путёвок, но почему-то они не соответствуют данным во вкладке "путёвка", где, например, 01 января 2013 г. МАН В 919 УС 190 имеет номер путёвки 007166, а в основном листе формула присвоила ему номер листа 007169.Bobka
Попробовал решить Вашу задачу через доп-столбец и SQL-запрос - уж больно LEFT JOIN здесь напрашивался на мой спортивный интерес. И заметил кое-что. За 3 января 2013 года у Вас автомобиль "МАН А 285 ХЕ" имеет два разных маршрутных листа: 007139 и 007215 на 3 и 2 поездки соответственно. Наверно, решение должно и кол-во поездок ещё учитывать, так как у одного авто может быть несколько маршрутов за день.
Во вложении кнопка, для работы необходимо разрешить макросы. Листы и колонки переименованы для моего удобства.
[vba]
Код
Sub Rioran() 'Syntaxis for this task were inspired by LightZ from 'http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=46711&TITLE_SEO=46711&MID=388447#message388447 Dim SQLConn As Object, strQuery As String, strConnect As String Set SQLConn = CreateObject("ADODB.Connection")
Select Case CLng(Split(Application.Version, ".")(0)) Case Is < 12 strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" Case Is >= 12 strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" End Select
SQLConn.Open strConnect ThisWorkbook.Worksheets("FullD").Range("F2").CopyFromRecordset SQLConn.Execute(strQuery) End Sub
[/vba]
Bobka, здравствуйте.
Попробовал решить Вашу задачу через доп-столбец и SQL-запрос - уж больно LEFT JOIN здесь напрашивался на мой спортивный интерес. И заметил кое-что. За 3 января 2013 года у Вас автомобиль "МАН А 285 ХЕ" имеет два разных маршрутных листа: 007139 и 007215 на 3 и 2 поездки соответственно. Наверно, решение должно и кол-во поездок ещё учитывать, так как у одного авто может быть несколько маршрутов за день.
Во вложении кнопка, для работы необходимо разрешить макросы. Листы и колонки переименованы для моего удобства.
[vba]
Код
Sub Rioran() 'Syntaxis for this task were inspired by LightZ from 'http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=46711&TITLE_SEO=46711&MID=388447#message388447 Dim SQLConn As Object, strQuery As String, strConnect As String Set SQLConn = CreateObject("ADODB.Connection")
Select Case CLng(Split(Application.Version, ".")(0)) Case Is < 12 strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";" Case Is >= 12 strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";" End Select
Rioran, спасибо за сообщение. По сути путевой лист выдаётся раз в день. Буду выяснять, если это не ошибка, и автомобиль может получить по несколько путёвок в день, то придётся использовать VBA, как Вы описали.
Rioran, спасибо за сообщение. По сути путевой лист выдаётся раз в день. Буду выяснять, если это не ошибка, и автомобиль может получить по несколько путёвок в день, то придётся использовать VBA, как Вы описали.Bobka
ArkaIIIa, _Boroda_, моя основная таблица занимает 22 Мб. Для форума я вырезал из неё маленький кусок. Пытаюсь применить, предложенные Вами формулы в своей таблице, она у меня ничего не находит. Ячейка остаётся пустой, как-будто значение не найдено, хотя оно существует в указанном массиве. Нужно ли мне что-то в ней изменить для работоспособности этих формул?
ArkaIIIa, _Boroda_, моя основная таблица занимает 22 Мб. Для форума я вырезал из неё маленький кусок. Пытаюсь применить, предложенные Вами формулы в своей таблице, она у меня ничего не находит. Ячейка остаётся пустой, как-будто значение не найдено, хотя оно существует в указанном массиве. Нужно ли мне что-то в ней изменить для работоспособности этих формул?Bobka
Причин может быть множество. Кстати, то, сколько весит таблица, менее важно для скорости, чем то, сколько строк захватывает формула. Если строк много, то зависнет все нафиг. У меня на работе таблицы по 150 мегов более-менее нормально работают, а вот запустишь в 20000 ячеек СУММЕСЛИ по 20000 ячеек - и все, можно идти курить.
Попробуйте сделать так: ВАм нужны из Вашей таблицы только 3 столбца - скопируйте из, вставьте в отдельный файл и проверьте действие формулы там. Если работать не будет, то вручную найдите то значение, которое, как Вы думаете, должно считаться, но не считается, и поставьте его в таблице в строку 5, например. Если все равно считать не будет, то обрежьте файл так, чтобы там был виден этот косяк и положите его (файл) сюда.
Причин может быть множество. Кстати, то, сколько весит таблица, менее важно для скорости, чем то, сколько строк захватывает формула. Если строк много, то зависнет все нафиг. У меня на работе таблицы по 150 мегов более-менее нормально работают, а вот запустишь в 20000 ячеек СУММЕСЛИ по 20000 ячеек - и все, можно идти курить.
Попробуйте сделать так: ВАм нужны из Вашей таблицы только 3 столбца - скопируйте из, вставьте в отдельный файл и проверьте действие формулы там. Если работать не будет, то вручную найдите то значение, которое, как Вы думаете, должно считаться, но не считается, и поставьте его в таблице в строку 5, например. Если все равно считать не будет, то обрежьте файл так, чтобы там был виден этот косяк и положите его (файл) сюда._Boroda_