Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 09:46   #1
AdminMars
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 10
По умолчанию Сверка данных двух таблиц

Добрый день! Задача проста, но для меня оказалась не разрешимой(
Есть две таблицы ФИО и дата рождения! ЗАДАЧА: вывести отчет, содержащий ОДИНАКОВЫЕ ФИО и даты рождения
p.s. тема была, но материал не помог(((Спасибо
Вложения
Тип файла: rar EDV_есрн.rar (172.1 Кб, 58 просмотров)

Последний раз редактировалось AdminMars; 29.04.2011 в 09:55.
AdminMars вне форума Ответить с цитированием
Старый 29.04.2011, 16:45   #2
Djeki
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 136
Смех

Нажмите кнопку ПОЕХАЛИ на листе Совпадения.
Сравнивать ФИО из Таблица 1 с ФИО Таблицы 2 и совпадения вывести:
Совпадений кстати не так и много..
Вложения
Тип файла: rar EDV.rar (174.4 Кб, 119 просмотров)
Djeki вне форума Ответить с цитированием
Старый 04.05.2011, 08:42   #3
AdminMars
Пользователь
 
Регистрация: 28.04.2011
Сообщений: 10
По умолчанию

ай, спасибо, молодец!
AdminMars вне форума Ответить с цитированием
Старый 18.11.2012, 13:25   #4
Zufira
Новичок
Джуниор
 
Регистрация: 18.11.2012
Сообщений: 1
Хорошо

Спасибо большое! Вы очень помогли))))
Zufira вне форума Ответить с цитированием
Старый 19.08.2013, 21:45   #5
muhammad95
Новичок
Джуниор
 
Регистрация: 19.08.2013
Сообщений: 2
По умолчанию дубли

подскажите как вы первую таблицу сверели со второй
muhammad95 вне форума Ответить с цитированием
Старый 19.08.2013, 22:16   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код от Djeki на сегодня устарел - теперь на словаре такие сверки модно делать
Вот - под тот древний пример. Пара "лишних" строк/действий исправляют косяки в данных, и правда возможно есть недочёт при преобразовании некоторых строк в дату - не стал код тщательно доводить, т.к. не суть и никому это практически не нужно...

Код:
Sub hugo()
    Dim a(), b(), i&, ii&, t$, tt&, x&

    With CreateObject("scripting.dictionary")
        .comparemode = 1

        a = Sheets("Таблица 1").[a1].CurrentRegion.Value
        For i = 1 To UBound(a)
            .Item(Trim(a(i, 1)) & "|" & Trim(a(i, 2)) & "|" & Trim(a(i, 3)) & "|" & a(i, 4)) = i
        Next

        b = Sheets("Таблица 2").[a1].CurrentRegion.Value
        For i = 1 To UBound(b)
            If Len(b(i, 4)) Then
                t = Trim(b(i, 1)) & "|" & Trim(b(i, 2)) & "|" & Trim(b(i, 3)) & "|" & CDate(Replace(b(i, 4), "г.", ""))
            Else
                t = Trim(b(i, 1)) & "|" & Trim(b(i, 2)) & "|" & "|" & CDate(Replace(b(i, 3), "г.", ""))
            End If
            If .exists(t) Then
                ii = ii + 1
                tt = .Item(t)
                For x = 1 To 4: b(ii, x) = a(tt, x): Next
            End If
        Next
        Sheets("Совпадения").[a1].Resize(ii, 4) = b

    End With
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 19.08.2013 в 22:43.
Hugo121 вне форума Ответить с цитированием
Старый 19.08.2013, 23:26   #7
Czeslaw
Пользователь
 
Регистрация: 08.07.2013
Сообщений: 95
По умолчанию

Можно сделать Вашу работу условным форматированием. Формула условного форматирования =COUNTIF('Таблица 1'!E:E;D68).
Но сразу необходимо удалить все лишние пробелы, поправить Ф.И.О., так как у некоторых год рождения приписан к отчеству и т.д.
Правда я не знаю как откроется у Вас мой файл, т.к. я делал его на Excel 2010.
Вложения
Тип файла: rar EDV_есрн.rar (437.1 Кб, 18 просмотров)
Czeslaw вне форума Ответить с цитированием
Старый 19.08.2013, 23:41   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну да, если вручную или формулой слить ФИО+дата (исправив сперва все косяки) - то можно счётесли() или хоть впр() использовать для определения пар.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 20.08.2013, 10:33   #9
Czeslaw
Пользователь
 
Регистрация: 08.07.2013
Сообщений: 95
По умолчанию

Можно и так, но прежде
1. Убрать лишние пробелы.
2. Поменять формат даты на втором листе (формула есть в файле).
3. Формулой
=COUNTIFS('Таблица 2'!A:A;A2;'Таблица 2'!B:B;B2;'Таблица 2'!C:C;C2;'Таблица 2'!E:E;D2) и фильтрованием определить совпадения.
При таком методе отпадает использование макросов, а косяки в любом случае надо исправлять.
Вложения
Тип файла: rar список.rar (290.6 Кб, 40 просмотров)
Czeslaw вне форума Ответить с цитированием
Старый 20.08.2013, 10:55   #10
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну макрос эти косяки исправляет "на лету" - и пробелы, и даты, и регистр, и то, что местами даты в другой ячейке.
По крайней мере мой вариант.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объеденение данных из двух таблиц yuriybel Microsoft Office Access 0 11.01.2011 22:35
добавление данных из двух таблиц в DBGrid AJlEKCA БД в Delphi 2 09.01.2011 14:31
Получение данных из двух таблиц SQL Server а S_Yevgeniy БД в Delphi 8 27.12.2009 15:12
Сверка на идентичность данных 2-ух таблиц и окрашивание подобных строк??? Vadim_abs Microsoft Office Excel 8 27.10.2009 10:59
Выорка данных Select из двух связанных таблиц... hijke БД в Delphi 0 28.10.2008 08:24