Добрый день! Помогите, пожалуйста, сделать следующее. Имеется несколько таблиц (на данный момент 3), в каждой из них есть значения, которые могут встретится в оставшихся таблицах. Нужно найти только одинаковые для трех данных таблиц значения и перенести их в отдельную таблицу. Очень надеюсь на вашу помощь. Прикрепляю файл с данными таблицами для наглядности.
Добрый день! Помогите, пожалуйста, сделать следующее. Имеется несколько таблиц (на данный момент 3), в каждой из них есть значения, которые могут встретится в оставшихся таблицах. Нужно найти только одинаковые для трех данных таблиц значения и перенести их в отдельную таблицу. Очень надеюсь на вашу помощь. Прикрепляю файл с данными таблицами для наглядности.Kate220033
Должны совпадать значения всей строки, то есть наименование товара, типоразмер, марка, стандарт, валюта, цена, объем лота, единица измерения, условие поставки, условие оплаты. Одинаковые (повторяющиеся) значения - те которые есть, как в первой, так и во второй и третьей таблице.
Например, труба нержавеющая бесшовная г/д 102,0х5,0 12Х18Н10Т ГОСТ 9940-81 BYR 240 000 000 0,5 Т ФРАНКО-СКЛАД ПОКУПАТЕЛЯ Оплата в течение 30 банковских дней по факту поставки. Данная позиция есть как в первой, так и во второй и в третьей таблице, и нужно ее вынести в отдельную таблицу.
Надеюсь, вы меня правильно поймете.
Должны совпадать значения всей строки, то есть наименование товара, типоразмер, марка, стандарт, валюта, цена, объем лота, единица измерения, условие поставки, условие оплаты. Одинаковые (повторяющиеся) значения - те которые есть, как в первой, так и во второй и третьей таблице.
Например, труба нержавеющая бесшовная г/д 102,0х5,0 12Х18Н10Т ГОСТ 9940-81 BYR 240 000 000 0,5 Т ФРАНКО-СКЛАД ПОКУПАТЕЛЯ Оплата в течение 30 банковских дней по факту поставки. Данная позиция есть как в первой, так и во второй и в третьей таблице, и нужно ее вынести в отдельную таблицу.
Формулами - нереально. Т.е. написать такую формулу можно, но уже на сотне строк будут "тормоза"
Почему Вам не слить данные со всех листов на один лист (или в Access) и воспользоваться сводной таблицей? За секунду будете получать то что Вам требуется
Цитата (Kate220033)
Должны совпадать значения всей строки
Формулами - нереально. Т.е. написать такую формулу можно, но уже на сотне строк будут "тормоза"
Почему Вам не слить данные со всех листов на один лист (или в Access) и воспользоваться сводной таблицей? За секунду будете получать то что Вам требуетсяSerge_007
Было просто замечательно, если бы я правильно разнесла поля. Я не совсем понимаю, что и куда.. Могли бы вы подсказать? А еще лучше показать? Если нужно, объединю 3 таблицы в одну. Буду вам очень признательна.
Было просто замечательно, если бы я правильно разнесла поля. Я не совсем понимаю, что и куда.. Могли бы вы подсказать? А еще лучше показать? Если нужно, объединю 3 таблицы в одну. Буду вам очень признательна.Kate220033
Сергей, можно не сливать таблицы в одну (особенно если это данные, полученные из других источников). Можно "чисто по-акцессовски", через имеющийся класс ADO, создать запрос нужного вида - и получить ответ... Ведь сводная делает это же самое, но пользует место и ресурс. А можно вообще извратиться - даже не заливать данные в Excel, а брать их из источников-исходников.
Сергей, можно не сливать таблицы в одну (особенно если это данные, полученные из других источников). Можно "чисто по-акцессовски", через имеющийся класс ADO, создать запрос нужного вида - и получить ответ... Ведь сводная делает это же самое, но пользует место и ресурс. А можно вообще извратиться - даже не заливать данные в Excel, а брать их из источников-исходников.AndreTM
Спасибо большое! Объясните, пожалуйста, ка вы это сделали?? Мне нужен алгоритм, предстоит еще много раз проделывать такое.. И не всегда будет 3 таблицы, количество будет увеличиваться, а суть та же. Заранее спасибо.
Я внимательно посмотрела и заметила, что в таблице с результатом есть позиция, которая встречается только в первой и в третьей таблице, во второй ее нет, следовательно она не должна быть в результирующей таблице. Можно это как-нибудь исправить?
Спасибо большое! Объясните, пожалуйста, ка вы это сделали?? Мне нужен алгоритм, предстоит еще много раз проделывать такое.. И не всегда будет 3 таблицы, количество будет увеличиваться, а суть та же. Заранее спасибо.
Я внимательно посмотрела и заметила, что в таблице с результатом есть позиция, которая встречается только в первой и в третьей таблице, во второй ее нет, следовательно она не должна быть в результирующей таблице. Можно это как-нибудь исправить?Kate220033
Сообщение отредактировал Kate220033 - Вторник, 04.06.2013, 10:06
Если вопрос ко мне, то я просто вручную скопировал таблицы с разных листов и вставил их друг под другом (даже шапки оставил, хотя их все, кроме первой можно поудалять)
Если вопрос ко мне, то я просто вручную скопировал таблицы с разных листов и вставил их друг под другом (даже шапки оставил, хотя их все, кроме первой можно поудалять)Serge_007
Я не видел такого условия... Ориентировался на это:
Цитата (Kate220033)
Должны совпадать значения всей строки, то есть наименование товара, типоразмер, марка, стандарт, валюта, цена, объем лота, единица измерения, условие поставки, условие оплаты.
Цитата (Hugo)
по условиям не должно быть больше 24
Я не видел такого условия... Ориентировался на это:
Цитата (Kate220033)
Должны совпадать значения всей строки, то есть наименование товара, типоразмер, марка, стандарт, валюта, цена, объем лота, единица измерения, условие поставки, условие оплаты.
Условие вот: "Нужно найти только одинаковые для трех данных таблиц значения" "Перенести" я заменил на "копировать". Или всёж нужно перенести? [vba]
Код
Sub tt() Dim sh As Object, a(), ind&, i&, x&, t$, k
With CreateObject("Scripting.Dictionary") For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист4" Then ind = ind + 1 a = sh.[a1].CurrentRegion.Value For i = 1 To UBound(a) t = "" For x = 1 To UBound(a, 2) t = t & "|" & a(i, x) Next t = Mid(t, 2) .Item(t) = .Item(t) + 1
Next End If Next i = 0 Sheets("Лист4").Cells.Clear For Each k In .keys If .Item(k) = ind Then i = i + 1 Sheets("Лист4").Cells(i, 1).Resize(, x - 1) = Split(k, "|") End If Next End With
End Sub
[/vba] P.S. Шапки нет - потому что она не проходит проверку Т.е. не одинакова на всех листах.
Условие вот: "Нужно найти только одинаковые для трех данных таблиц значения" "Перенести" я заменил на "копировать". Или всёж нужно перенести? [vba]
Код
Sub tt() Dim sh As Object, a(), ind&, i&, x&, t$, k
With CreateObject("Scripting.Dictionary") For Each sh In ThisWorkbook.Worksheets If sh.Name <> "Лист4" Then ind = ind + 1 a = sh.[a1].CurrentRegion.Value For i = 1 To UBound(a) t = "" For x = 1 To UBound(a, 2) t = t & "|" & a(i, x) Next t = Mid(t, 2) .Item(t) = .Item(t) + 1
Next End If Next i = 0 Sheets("Лист4").Cells.Clear For Each k In .keys If .Item(k) = ind Then i = i + 1 Sheets("Лист4").Cells(i, 1).Resize(, x - 1) = Split(k, "|") End If Next End With
End Sub
[/vba] P.S. Шапки нет - потому что она не проходит проверку Т.е. не одинакова на всех листах.Hugo