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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение ячеек главной таблицы из разных источников - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение ячеек главной таблицы из разных источников (Формулы/Formulas)
Заполнение ячеек главной таблицы из разных источников
Bobka Дата: Пятница, 10.07.2015, 13:49 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Добрый день. Давно не обращался с вопросом. Сейчас у меня есть реестр рейсов автомобилей за последние 3 года. Форма таблиц одинакова. Только во вкладке "путёвки" имеются номера путевых листов, которые нужно скопировать в основную таблицу соответственно машине и дате выезда. Т.е. нужно красный текст столбца А вкладки "путёвки" скопировать в столбец А вкладки "основная таблица".
Использованная мной формула неверна, т.к. сравнивает даты лишь в одной ячейке. Существует ли одна из возможностей:
1. сначала воспользоваться формулой ВПР, а потом ЕСЛИ? Например, он ищет госномер автомобиля, а потом сравнивает дату. Если дата совпадает, то он копирует номер путёвки в нужную ячейку.
2. формулой определить дату (например, 01.01.2015), а потом применить функцию ВПР на все машины в этой дате?
3. Может быть есть более простой способ вставить ячейки столбца "номер путевого листа" из вкладки "путёвки" во вкладку

Премного благодарен за помощь.
К сообщению приложен файл: 3859067.xlsx (73.7 Kb)
 
Ответить
СообщениеДобрый день. Давно не обращался с вопросом. Сейчас у меня есть реестр рейсов автомобилей за последние 3 года. Форма таблиц одинакова. Только во вкладке "путёвки" имеются номера путевых листов, которые нужно скопировать в основную таблицу соответственно машине и дате выезда. Т.е. нужно красный текст столбца А вкладки "путёвки" скопировать в столбец А вкладки "основная таблица".
Использованная мной формула неверна, т.к. сравнивает даты лишь в одной ячейке. Существует ли одна из возможностей:
1. сначала воспользоваться формулой ВПР, а потом ЕСЛИ? Например, он ищет госномер автомобиля, а потом сравнивает дату. Если дата совпадает, то он копирует номер путёвки в нужную ячейку.
2. формулой определить дату (например, 01.01.2015), а потом применить функцию ВПР на все машины в этой дате?
3. Может быть есть более простой способ вставить ячейки столбца "номер путевого листа" из вкладки "путёвки" во вкладку

Премного благодарен за помощь.

Автор - Bobka
Дата добавления - 10.07.2015 в 13:49
ArkaIIIa Дата: Пятница, 10.07.2015, 13:56 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Так нужно?

Протяните вниз формулу. Я только до 60 строки протянул.
К сообщению приложен файл: 3859067_1.xlsx (74.1 Kb)


Сообщение отредактировал ArkaIIIa - Пятница, 10.07.2015, 13:58
 
Ответить
СообщениеТак нужно?

Протяните вниз формулу. Я только до 60 строки протянул.

Автор - ArkaIIIa
Дата добавления - 10.07.2015 в 13:56
Bobka Дата: Пятница, 10.07.2015, 14:23 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
ArkaIIIa, вроде бы эта формула возвращает номера путёвок, но почему-то они не соответствуют данным во вкладке "путёвка", где, например, 01 января 2013 г. МАН В 919 УС 190 имеет номер путёвки 007166, а в основном листе формула присвоила ему номер листа 007169.
 
Ответить
СообщениеArkaIIIa, вроде бы эта формула возвращает номера путёвок, но почему-то они не соответствуют данным во вкладке "путёвка", где, например, 01 января 2013 г. МАН В 919 УС 190 имеет номер путёвки 007166, а в основном листе формула присвоила ему номер листа 007169.

Автор - Bobka
Дата добавления - 10.07.2015 в 14:23
ArkaIIIa Дата: Пятница, 10.07.2015, 14:31 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 894
Репутация: 115 ±
Замечаний: 0% ±

2010
Bobka
Да, поторопился.
Замените на:
Код
=ЕСЛИОШИБКА(ИНДЕКС(путёвки!$A$3:$A$503;ПОИСКПОЗ('основная таблица'!B3&'основная таблица'!C3;путёвки!$B$1:$B$503&путёвки!$C$1:$C$503;0)-2;);"")

ну или
Код
=ЕСЛИОШИБКА(ИНДЕКС(путёвки!$A$1:$A$503;ПОИСКПОЗ('основная таблица'!B3&'основная таблица'!C3;путёвки!$B$1:$B$503&путёвки!$C$1:$C$503;0););"")

Что по сути одно и то же.
Формула массива (вводится нажатием ctrl+shift+enter)


Сообщение отредактировал ArkaIIIa - Пятница, 10.07.2015, 14:35
 
Ответить
СообщениеBobka
Да, поторопился.
Замените на:
Код
=ЕСЛИОШИБКА(ИНДЕКС(путёвки!$A$3:$A$503;ПОИСКПОЗ('основная таблица'!B3&'основная таблица'!C3;путёвки!$B$1:$B$503&путёвки!$C$1:$C$503;0)-2;);"")

ну или
Код
=ЕСЛИОШИБКА(ИНДЕКС(путёвки!$A$1:$A$503;ПОИСКПОЗ('основная таблица'!B3&'основная таблица'!C3;путёвки!$B$1:$B$503&путёвки!$C$1:$C$503;0););"")

Что по сути одно и то же.
Формула массива (вводится нажатием ctrl+shift+enter)

Автор - ArkaIIIa
Дата добавления - 10.07.2015 в 14:31
китин Дата: Пятница, 10.07.2015, 14:34 | Сообщение № 5
Группа: Модераторы
Ранг: Экселист
Сообщений: 7015
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
так?
Код
=ИНДЕКС(путёвки!$A$3:$A$503;ПОИСКПОЗ($B3&$C3;путёвки!$B$3:$B$503&путёвки!$C$3:$C$503;0))
формула массива.
ЗЫ ArkaIIIa, файл не смотрел
А зря.один в один


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852


Сообщение отредактировал китин - Пятница, 10.07.2015, 14:37
 
Ответить
Сообщениетак?
Код
=ИНДЕКС(путёвки!$A$3:$A$503;ПОИСКПОЗ($B3&$C3;путёвки!$B$3:$B$503&путёвки!$C$3:$C$503;0))
формула массива.
ЗЫ ArkaIIIa, файл не смотрел
А зря.один в один

Автор - китин
Дата добавления - 10.07.2015 в 14:34
Bobka Дата: Пятница, 10.07.2015, 14:39 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Спасибо огромное. С массивами дела ещё не имел. Буду постигать.
 
Ответить
СообщениеСпасибо огромное. С массивами дела ещё не имел. Буду постигать.

Автор - Bobka
Дата добавления - 10.07.2015 в 14:39
_Boroda_ Дата: Пятница, 10.07.2015, 14:48 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
С массивами дела ещё не имел

Тогда держите без массива
Код
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/(B3&C3=путёвки!$B$3:$B$503&путёвки!$C$3:$C$503);путёвки!$A$3:$A$503);"")
К сообщению приложен файл: 3859067_2.xlsx (83.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
С массивами дела ещё не имел

Тогда держите без массива
Код
=ЕСЛИОШИБКА(ПРОСМОТР(;-1/(B3&C3=путёвки!$B$3:$B$503&путёвки!$C$3:$C$503);путёвки!$A$3:$A$503);"")

Автор - _Boroda_
Дата добавления - 10.07.2015 в 14:48
Rioran Дата: Пятница, 10.07.2015, 16:04 | Сообщение № 8
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
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
      
     strQuery = strQuery & "SELECT [TG].[List], [FD].[Date], [FD].[Car], [FD].[Trips] "
     strQuery = strQuery & "FROM [FullD$A:D] as [FD] "
     strQuery = strQuery & "left outer join [TargD$A:E] as [TG] "
     strQuery = strQuery & "on [TG].[Key] = [FD].[Key] "
      
     SQLConn.Open strConnect
     ThisWorkbook.Worksheets("FullD").Range("F2").CopyFromRecordset SQLConn.Execute(strQuery)
End Sub
[/vba]
К сообщению приложен файл: Rio_SQL_test_3.xlsm (98.5 Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщение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
      
     strQuery = strQuery & "SELECT [TG].[List], [FD].[Date], [FD].[Car], [FD].[Trips] "
     strQuery = strQuery & "FROM [FullD$A:D] as [FD] "
     strQuery = strQuery & "left outer join [TargD$A:E] as [TG] "
     strQuery = strQuery & "on [TG].[Key] = [FD].[Key] "
      
     SQLConn.Open strConnect
     ThisWorkbook.Worksheets("FullD").Range("F2").CopyFromRecordset SQLConn.Execute(strQuery)
End Sub
[/vba]

Автор - Rioran
Дата добавления - 10.07.2015 в 16:04
Bobka Дата: Понедельник, 13.07.2015, 18:29 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Rioran, спасибо за сообщение. По сути путевой лист выдаётся раз в день. Буду выяснять, если это не ошибка, и автомобиль может получить по несколько путёвок в день, то придётся использовать VBA, как Вы описали.
 
Ответить
СообщениеRioran, спасибо за сообщение. По сути путевой лист выдаётся раз в день. Буду выяснять, если это не ошибка, и автомобиль может получить по несколько путёвок в день, то придётся использовать VBA, как Вы описали.

Автор - Bobka
Дата добавления - 13.07.2015 в 18:29
Bobka Дата: Вторник, 14.07.2015, 16:31 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 14
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
ArkaIIIa, _Boroda_, моя основная таблица занимает 22 Мб. Для форума я вырезал из неё маленький кусок. Пытаюсь применить, предложенные Вами формулы в своей таблице, она у меня ничего не находит. Ячейка остаётся пустой, как-будто значение не найдено, хотя оно существует в указанном массиве. Нужно ли мне что-то в ней изменить для работоспособности этих формул?
 
Ответить
СообщениеArkaIIIa, _Boroda_, моя основная таблица занимает 22 Мб. Для форума я вырезал из неё маленький кусок. Пытаюсь применить, предложенные Вами формулы в своей таблице, она у меня ничего не находит. Ячейка остаётся пустой, как-будто значение не найдено, хотя оно существует в указанном массиве. Нужно ли мне что-то в ней изменить для работоспособности этих формул?

Автор - Bobka
Дата добавления - 14.07.2015 в 16:31
_Boroda_ Дата: Вторник, 14.07.2015, 16:44 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Причин может быть множество.
Кстати, то, сколько весит таблица, менее важно для скорости, чем то, сколько строк захватывает формула. Если строк много, то зависнет все нафиг. У меня на работе таблицы по 150 мегов более-менее нормально работают, а вот запустишь в 20000 ячеек СУММЕСЛИ по 20000 ячеек - и все, можно идти курить.

Попробуйте сделать так: ВАм нужны из Вашей таблицы только 3 столбца - скопируйте из, вставьте в отдельный файл и проверьте действие формулы там. Если работать не будет, то вручную найдите то значение, которое, как Вы думаете, должно считаться, но не считается, и поставьте его в таблице в строку 5, например. Если все равно считать не будет, то обрежьте файл так, чтобы там был виден этот косяк и положите его (файл) сюда.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПричин может быть множество.
Кстати, то, сколько весит таблица, менее важно для скорости, чем то, сколько строк захватывает формула. Если строк много, то зависнет все нафиг. У меня на работе таблицы по 150 мегов более-менее нормально работают, а вот запустишь в 20000 ячеек СУММЕСЛИ по 20000 ячеек - и все, можно идти курить.

Попробуйте сделать так: ВАм нужны из Вашей таблицы только 3 столбца - скопируйте из, вставьте в отдельный файл и проверьте действие формулы там. Если работать не будет, то вручную найдите то значение, которое, как Вы думаете, должно считаться, но не считается, и поставьте его в таблице в строку 5, например. Если все равно считать не будет, то обрежьте файл так, чтобы там был виден этот косяк и положите его (файл) сюда.

Автор - _Boroda_
Дата добавления - 14.07.2015 в 16:44
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Заполнение ячеек главной таблицы из разных источников (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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