Здравствуйте! Как ни пытался - не нашёл пример. Помогите кто умеет, пожалуйста. Суть: Имеем две таблицы. Нужно в первую таблицу подставить значения из второй. В столбик себестоимость. Наименований как в первой, так и во второй таблице 1000+ пример1 - то, что имеем пример2 - то, что должны получить на выходе.
Алгоритм я себе представляю так, в первой таблице берётся значение номенклатуры в первой ячейке и ищется во второй таблице, в случае успеха - значение вписывается в соответствующую ячейку, далее - берётся следующая ячейка первой таблицы и в таком же духе до конца первой таблицы.
Здравствуйте! Как ни пытался - не нашёл пример. Помогите кто умеет, пожалуйста. Суть: Имеем две таблицы. Нужно в первую таблицу подставить значения из второй. В столбик себестоимость. Наименований как в первой, так и во второй таблице 1000+ пример1 - то, что имеем пример2 - то, что должны получить на выходе.
Алгоритм я себе представляю так, в первой таблице берётся значение номенклатуры в первой ячейке и ищется во второй таблице, в случае успеха - значение вписывается в соответствующую ячейку, далее - берётся следующая ячейка первой таблицы и в таком же духе до конца первой таблицы.Luchin
Алгоритм, который вы себе представляете, реализован в функции ВПР(). Вот только такой пример, как у вас, никто составить не сумел. Поэтому и не нашлось ничего.
Алгоритм, который вы себе представляете, реализован в функции ВПР(). Вот только такой пример, как у вас, никто составить не сумел. Поэтому и не нашлось ничего. RAN
Быть или не быть, вот в чем загвоздка!
Сообщение отредактировал RAN - Вторник, 23.12.2014, 20:59
RAN, Да, спасибо, у меня получилось сделать это с помощью ВПР. Но на адаптацию новых выгрузок у меня будет каждый раз уходить куча времени, чтобы снова всё забить вручную, растянуть.. Потому я хотел решить вопрос с помощью VBA. Тогда я мог бы посадить макрос на кнопку, а новые таблицы вставлять в одно и то же место, ничего не переделывая больше. И не забивая каждый раз формулу.
RAN, Да, спасибо, у меня получилось сделать это с помощью ВПР. Но на адаптацию новых выгрузок у меня будет каждый раз уходить куча времени, чтобы снова всё забить вручную, растянуть.. Потому я хотел решить вопрос с помощью VBA. Тогда я мог бы посадить макрос на кнопку, а новые таблицы вставлять в одно и то же место, ничего не переделывая больше. И не забивая каждый раз формулу.Luchin
еще вариант без 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 можно тут
еще вариант без 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
Здравствуйте. Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах. Как надо измeнить код Leanna в этом случае?
Здравствуйте. Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах. Как надо измeнить код Leanna в этом случае?Tunka
Здравствуйте. Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах и сравнивать надо текстовые значения. Как надо изменить код Leanna в этом случае?
Здравствуйте. Заранее прошу простить за вопрос. У меня точно такая же задача, но таблицы находятся на разных листах и сравнивать надо текстовые значения. Как надо изменить код Leanna в этом случае?Tunka
Если на примере ТС то так. Под ваши данные его скорее всего корректировать надо. [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]
Если на примере ТС то так. Под ваши данные его скорее всего корректировать надо. [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
Спасибо большое! Базируясь на вашей программе сделала что-то и все работает!!!
[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