|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
06.10.2008, 19:15 | #1 | ||
Регистрация: 01.10.2008
Сообщений: 3
|
Как сравнить две таблицы?
Существует две таблицы, таблица А и таблица Б. Необходимо сравнить их по первым столбцам, таким образом, что при !несовпадении! данных в этих столбцах, данные добавляются из табл.Б в табл.А.
Буду благодарен за любые подсказки) --------- примечание модератора - вдруг кому пригодится -------------- Цитата:
на сайте ExcelVBA.ru можно скачать универсальную программу обработки прайс-листов: http://excelvba.ru/programmes/Unification Цитата:
Программа умеет объединять данные из самых разных прайсов (формата CSV и Excel), в том числе из файлов иерархической структуры (выгрузки из 1С). Последний раз редактировалось EducatedFool; 30.09.2013 в 09:20. |
||
07.10.2008, 01:31 | #2 |
Почти "Чайник"
Форумчанин
Регистрация: 09.06.2008
Сообщений: 134
|
Можно просто копировать таблицу Б в конец таблицы А
потом запустить макрос: Код:
Уверен что существует и более красивое решение. Но это первое что пришло в голову. |
07.10.2008, 05:54 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Предлагаю другое решение задачи. К сожалению, автор не указал, где расположены таблицы. В предлагаемом примере предполагается, что таблица "A" находится на 1 листе, а таблица "B" на втором. Обе таблицы начинаются со столбца "A", по которому и нужно искать совпадения.
Создаем новую коллекцию из элементов столбца "A" первой таблицы. Затем, добавляем в коллекцию элементы столбца "A" второй таблицы. Анализируя уникальное свойство коллекции (т.е. двух одинаковых членов коллекции быть не может), добавляем в первую таблицу неповторяющиеся строки второй таблицы. Количество столбцов таблиц - произвольное. Если нужно, в конце процедуры можно добавить сортировку. Такой способ реализует следующий код: Код:
Чем шире угол зрения, тем он тупее.
|
07.10.2008, 08:25 | #4 |
Почти "Чайник"
Форумчанин
Регистрация: 09.06.2008
Сообщений: 134
|
|
07.10.2008, 09:32 | #5 | |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
Цитата:
Вот код с детальными комментариями: Код:
Чем шире угол зрения, тем он тупее.
|
|
07.10.2008, 09:44 | #6 |
Почти "Чайник"
Форумчанин
Регистрация: 09.06.2008
Сообщений: 134
|
Меня смутила строка Sheets(1).Select: With Sheets(2)
В первом случае Cells(i, "A"), CStr(.Cells(i, "A")) обращение было активному листу (1) А во втором к конструкции With .Cells(i, "A"), CStr(.Cells(i, "A")) Красиво задумано но "чайнику" сразу понять сложно (Всего одна точка) |
07.10.2008, 11:16 | #7 |
Регистрация: 01.10.2008
Сообщений: 3
|
Большое спасибо господа!!! Всё отсортировалось и добавилось!!! Очень здорово что есть форум на котором такие чайники как я могут спросить совета или подсказки. Спасибо что не пожалели своего времени помочь
|
15.04.2009, 07:43 | #8 |
Пользователь
Регистрация: 17.03.2009
Сообщений: 41
|
А как в моем случае сравнить две таблицы???
А как в моем случае с помощью макроса сравнить две таблицы???
Основание код заказа детали, надо както сравнить цены из прайса и счета. |
20.07.2010, 17:14 | #9 |
Регистрация: 03.11.2007
Сообщений: 5
|
2-ой столбец прайс 1.....................8-ой прайс 2
заполнить со второй ячейки не одинаковые останутся на своих местах, а одинаковые передвинутся столбец 3-4 наглядно увидите где чего не хватает, а где лишние я не программист. но мне кажется этот код более актуален Sub suncronizatija() For i = 2 To 1000 'i= stolbec(v dannom slucay 2)(so vtoroy jacejki) For j = 2 To 1000 'j=stolbec(v dannom slucay 8)(so vtoroy jacejki) 'esli dannye jaceyki stolbca 2=dannye jaceyki stolbca 8, to snjlbec 3 prinimaet dannye stolbca 2, a stolbec 4 jaceyki 8 If Cells(i, 2) = Cells(j, 8) Then Cells(i, 3) = Cells(i, 2): Cells(i, 4) = Cells(j, 8): Cells(i, 2) = "": Cells(j, 8) = "": Exit For Next j Next i MsgBox ("Синхронизация 1000 ячеек, закончился!") End Sub |
20.07.2010, 21:23 | #10 |
Форумчанин
Регистрация: 23.01.2010
Сообщений: 261
|
Ребята, вы прикалываетесь? Или действительно готовы объяснить работу макросов.
Мне это интересно для самообразования. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как с помощью формул можно сравнить и вывести данные | kutt | Microsoft Office Excel | 2 | 24.09.2008 17:05 |
как сравнить 2 блока памяти7 | KORN | Общие вопросы Delphi | 5 | 01.04.2008 10:50 |
помогите! как сравнить BMP файлы? | lenivec | Мультимедиа в Delphi | 20 | 14.11.2007 21:47 |
как оператором insert вставить данные сразу в две таблицы? | furstenberg | БД в Delphi | 2 | 18.10.2007 16:39 |
Как сравнить элементы 2 массивов между собой? | DragonionS | Общие вопросы Delphi | 1 | 01.07.2007 21:49 |