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

Вход

Регистрация

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

 

= Мир MS Excel/Сравнить две таблицы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнить две таблицы (Макросы/Sub)
Сравнить две таблицы
Luchin Дата: Вторник, 23.12.2014, 20:52 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Как ни пытался - не нашёл пример. Помогите кто умеет, пожалуйста.
Суть: Имеем две таблицы. Нужно в первую таблицу подставить значения из второй. В столбик себестоимость. Наименований как в первой, так и во второй таблице 1000+
пример1 - то, что имеем
пример2 - то, что должны получить на выходе.

Алгоритм я себе представляю так, в первой таблице берётся значение номенклатуры в первой ячейке и ищется во второй таблице, в случае успеха - значение вписывается в соответствующую ячейку, далее - берётся следующая ячейка первой таблицы и в таком же духе до конца первой таблицы.
К сообщению приложен файл: 4369433.xlsx (8.6 Kb) · 8785001.xlsx (8.6 Kb)
 
Ответить
СообщениеЗдравствуйте!
Как ни пытался - не нашёл пример. Помогите кто умеет, пожалуйста.
Суть: Имеем две таблицы. Нужно в первую таблицу подставить значения из второй. В столбик себестоимость. Наименований как в первой, так и во второй таблице 1000+
пример1 - то, что имеем
пример2 - то, что должны получить на выходе.

Алгоритм я себе представляю так, в первой таблице берётся значение номенклатуры в первой ячейке и ищется во второй таблице, в случае успеха - значение вписывается в соответствующую ячейку, далее - берётся следующая ячейка первой таблицы и в таком же духе до конца первой таблицы.

Автор - Luchin
Дата добавления - 23.12.2014 в 20:52
RAN Дата: Вторник, 23.12.2014, 20:58 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Алгоритм, который вы себе представляете, реализован в функции ВПР().
Вот только такой пример, как у вас, никто составить не сумел. Поэтому и не нашлось ничего. :D


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Вторник, 23.12.2014, 20:59
 
Ответить
СообщениеАлгоритм, который вы себе представляете, реализован в функции ВПР().
Вот только такой пример, как у вас, никто составить не сумел. Поэтому и не нашлось ничего. :D

Автор - RAN
Дата добавления - 23.12.2014 в 20:58
Luchin Дата: Вторник, 23.12.2014, 23:29 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
RAN, Да, спасибо, у меня получилось сделать это с помощью ВПР. Но на адаптацию новых выгрузок у меня будет каждый раз уходить куча времени, чтобы снова всё забить вручную, растянуть.. Потому я хотел решить вопрос с помощью VBA. Тогда я мог бы посадить макрос на кнопку, а новые таблицы вставлять в одно и то же место, ничего не переделывая больше. И не забивая каждый раз формулу.
 
Ответить
СообщениеRAN, Да, спасибо, у меня получилось сделать это с помощью ВПР. Но на адаптацию новых выгрузок у меня будет каждый раз уходить куча времени, чтобы снова всё забить вручную, растянуть.. Потому я хотел решить вопрос с помощью VBA. Тогда я мог бы посадить макрос на кнопку, а новые таблицы вставлять в одно и то же место, ничего не переделывая больше. И не забивая каждый раз формулу.

Автор - Luchin
Дата добавления - 23.12.2014 в 23:29
Leanna Дата: Вторник, 23.12.2014, 23:55 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Сделала на вашем примере код. Но конечно лучше было бы иметь вид реальных выгрузок, тогда можно было бы "по кнопке" помочь организовать.
К сообщению приложен файл: 4369433.xlsm (17.4 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеСделала на вашем примере код. Но конечно лучше было бы иметь вид реальных выгрузок, тогда можно было бы "по кнопке" помочь организовать.

Автор - Leanna
Дата добавления - 23.12.2014 в 23:55
krosav4ig Дата: Среда, 24.12.2014, 00:18 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
еще вариант без VBA и формул на листе
для работы должен быть установлен Power Query
таблица Результат обновляемая, при ее обновлении запрос берет данные из таблиц Таблица1 и Таблица2 и выводится результирующая таблица на основе этих данных
текст запроса Power Query:
[vba]
Код
let
       Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content][[Наименование],[Цена]],
       Источник2 = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
       Слияние=Table.ExpandTableColumn(Table.NestedJoin(Источник,{"Наименование"},Источник2,{"Наименование"},"_"), "_", {"Себестоимость"}, {"Себестоимость"}),
       Результат = Table.SelectRows(Слияние, each ([Наименование] <> null))
in
       Результат
[/vba]
[p.s.]скачать Power Query для excel 2010/2013 можно тут
К сообщению приложен файл: 4079259.xlsx (20.0 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Среда, 24.12.2014, 00:24
 
Ответить
Сообщениееще вариант без VBA и формул на листе
для работы должен быть установлен Power Query
таблица Результат обновляемая, при ее обновлении запрос берет данные из таблиц Таблица1 и Таблица2 и выводится результирующая таблица на основе этих данных
текст запроса Power Query:
[vba]
Код
let
       Источник = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content][[Наименование],[Цена]],
       Источник2 = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
       Слияние=Table.ExpandTableColumn(Table.NestedJoin(Источник,{"Наименование"},Источник2,{"Наименование"},"_"), "_", {"Себестоимость"}, {"Себестоимость"}),
       Результат = Table.SelectRows(Слияние, each ([Наименование] <> null))
in
       Результат
[/vba]
[p.s.]скачать Power Query для excel 2010/2013 можно тут

Автор - krosav4ig
Дата добавления - 24.12.2014 в 00:18
Tunka Дата: Вторник, 17.02.2015, 12:30 | Сообщение № 6
Группа: Гости
Здравствуйте.
Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах. Как надо измeнить код Leanna в этом случае?
 
Ответить
СообщениеЗдравствуйте.
Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах. Как надо измeнить код Leanna в этом случае?

Автор - Tunka
Дата добавления - 17.02.2015 в 12:30
Tunka Дата: Вторник, 17.02.2015, 13:01 | Сообщение № 7
Группа: Гости
Здравствуйте.
Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах и сравнивать надо текстовые значения. Как надо изменить код Leanna в этом случае?
 
Ответить
СообщениеЗдравствуйте.
Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах и сравнивать надо текстовые значения. Как надо изменить код Leanna в этом случае?

Автор - Tunka
Дата добавления - 17.02.2015 в 13:01
Leanna Дата: Вторник, 17.02.2015, 13:01 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
Если на примере ТС то так. Под ваши данные его скорее всего корректировать надо.
[vba]
Код
Sub ВПР22()
Set sh1 = Sheets("Лист1")
Set sh2 = Sheets("Лист2")

iET1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
iET2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = sh1.Range("B5:D" & iET1)
Set rng2 = sh2.Range("A1:B" & iET2)

rng1.Columns(3).ClearContents
For i = 1 To rng1.Rows.Count
     For j = 1 To rng2.Rows.Count
     If rng1(i, 1).Value = rng2(j, 1).Value Then rng1(i, 3).Value = rng2(j, 2).Value: Exit For
     Next
Next

End Sub
[/vba]
К сообщению приложен файл: vpr.xlsm (21.5 Kb)


Лучше день потерять, потом за пять минут долететь!
 
Ответить
СообщениеЕсли на примере ТС то так. Под ваши данные его скорее всего корректировать надо.
[vba]
Код
Sub ВПР22()
Set sh1 = Sheets("Лист1")
Set sh2 = Sheets("Лист2")

iET1 = sh1.Cells(Rows.Count, "B").End(xlUp).Row
iET2 = sh2.Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = sh1.Range("B5:D" & iET1)
Set rng2 = sh2.Range("A1:B" & iET2)

rng1.Columns(3).ClearContents
For i = 1 To rng1.Rows.Count
     For j = 1 To rng2.Rows.Count
     If rng1(i, 1).Value = rng2(j, 1).Value Then rng1(i, 3).Value = rng2(j, 2).Value: Exit For
     Next
Next

End Sub
[/vba]

Автор - Leanna
Дата добавления - 17.02.2015 в 13:01
Tunka Дата: Вторник, 17.02.2015, 13:23 | Сообщение № 9
Группа: Гости
Спасибо большое! Базируясь на вашей программе сделала что-то и все работает!!!

[vba]
Код
Sub accgr()
Set sh1 = Sheets("Query_ZA")
Set sh2 = Sheets("Accounting_Group_Description")

iET1 = Sheets("Query_ZA").Cells(Rows.Count, "B").End(xlUp).Row
iET2 = Sheets("Accounting_Group_Description").Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = Sheets("Query_ZA").Range("B2:K" & iET1)
Set rng2 = Sheets("Accounting_Group_Description").Range("A3:B" & iET2)

rng1.Columns(10).ClearContents
For i = 1 To rng1.Rows.Count
For j = 1 To rng2.Rows.Count
If StrComp(rng1(i, 1).Value, rng2(j, 1).Value) = 0 Then rng1(i, 10).Value = rng2(j, 2).Value: Exit For

Next
Next

End Sub
[/vba]
 
Ответить
СообщениеСпасибо большое! Базируясь на вашей программе сделала что-то и все работает!!!

[vba]
Код
Sub accgr()
Set sh1 = Sheets("Query_ZA")
Set sh2 = Sheets("Accounting_Group_Description")

iET1 = Sheets("Query_ZA").Cells(Rows.Count, "B").End(xlUp).Row
iET2 = Sheets("Accounting_Group_Description").Cells(Rows.Count, "A").End(xlUp).Row
Set rng1 = Sheets("Query_ZA").Range("B2:K" & iET1)
Set rng2 = Sheets("Accounting_Group_Description").Range("A3:B" & iET2)

rng1.Columns(10).ClearContents
For i = 1 To rng1.Rows.Count
For j = 1 To rng2.Rows.Count
If StrComp(rng1(i, 1).Value, rng2(j, 1).Value) = 0 Then rng1(i, 10).Value = rng2(j, 2).Value: Exit For

Next
Next

End Sub
[/vba]

Автор - Tunka
Дата добавления - 17.02.2015 в 13:23
Tunka Дата: Вторник, 17.02.2015, 13:26 | Сообщение № 10
Группа: Гости
Ой, определение sh1 & sh2 тут лишнее
 
Ответить
СообщениеОй, определение sh1 & sh2 тут лишнее

Автор - Tunka
Дата добавления - 17.02.2015 в 13:26
Leanna Дата: Вторник, 17.02.2015, 13:28 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 189
Репутация: 78 ±
Замечаний: 0% ±

excel 2010
да, я об этом хотела сказать, но вы сообразили раньше) Все верно.


Лучше день потерять, потом за пять минут долететь!
 
Ответить
Сообщениеда, я об этом хотела сказать, но вы сообразили раньше) Все верно.

Автор - Leanna
Дата добавления - 17.02.2015 в 13:28
Tunka Дата: Вторник, 17.02.2015, 16:08 | Сообщение № 12
Группа: Гости
Thanks for your help!!!
 
Ответить
СообщениеThanks for your help!!!

Автор - Tunka
Дата добавления - 17.02.2015 в 16:08
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сравнить две таблицы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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