powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнение таблиц Exsel
25 сообщений из 40, страница 1 из 2
Сравнение таблиц Exsel
    #37511422
Slava1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Есть две таблице(книги) exsel с двумя столбцами id и fio, как сравнить две этих таблице и в третью поместить результат сравнения. Таблицы сравниваются по id, т.е. если в первой таблице есть строка ID=1111 и во второй ID=1111 то эту строку нужно поместить в третью таблицу. Строк около 10000 в одной таблице и около 5000 в другой... вреде как то так)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37511443
Slava1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava1234,
Извиняюсь за ошибку)))
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37511470
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Результат" берется из первой таблицы? из второй?
Вообще, средствами Экзель - это функции листа ВПР(), ПРОСМОТР(), ...
Если хотите увидеть пример - приложите пример ваших таблиц...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37511660
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava1234,

Попробуйте программу Игоря(Hugo121).
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513254
Slava1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример что нужно)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513255
Slava1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava1234,
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513283
Slava1234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava1234,

Сравнение по тел. номерам
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513312
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Slava1234,
ИМХО лучше SQL запросом. Быстрей. Любимый конек R Dmitry:-) Подождем, он был сегодня на форуме. На будущее - лучше всегда выложить файлы с хотелками. И себе решение ускорите и других избавите от ненужных телодвижений.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513427
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно выполнить из любого файла, только изменить название путей к файлу и следить как называются листы в файлах

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Public Function ADO_R_Dmitry(ByVal StrSQL$, ByVal FilePath$, ByVal OutputRange As Range, _
ByVal FieldsName As Boolean, ByVal OutputFieldsName As Boolean)
'==============================================================================
'*Описание функции : Возвращает набор записей Recordset с первой ячейки адреса,
'* указанного диапазона.
'*strSql - Конструкция SQL  запроса.
'* FilePath - Полный путь к файлу включая имя и расширение.
'* OutputRange - адрес ячеки с которой начинается вывод данных.
'* FieldsName - используются или нет заголовки столбцов (True - False)
'* OutputFieldsName - вывод данных с заголовками или без (True - False), _
'* если FieldsName=False, заголовки не выводятся.
'==============================================================================
'* Автор R Dmitry (Дмитрий Русак dg_rusak@mail.ru skype: RDG_Dmitry)          |
'* WM:_R269866874234 U144446690328                                            |
'==============================================================================
Dim sCon As String, FieldName As String
Dim rs As Object, cn  As Object
Set rs = CreateObject("ADODB.Recordset")
Set cn = CreateObject("ADODB.Connection")
If FieldsName Then FieldName = "Yes" Else FieldName = "No"
Select Case CLng(Split(Application.Version, ".")( 0 ))
    Case Is <  12 
        sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & FilePath _
          & ";Extended Properties=""Excel 8.0;HDR=" & FieldName & ";IMEX=1"";"
    Case Is >=  12 
        sCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FilePath _
        & ";Extended Properties=""Excel 12.0;HDR=" & FieldName & ";IMEX=1"";"
End Select

cn.Open sCon
If Not cn.State =  1  Then Exit Function
Set rs = cn.Execute(StrSQL)
If Not FieldsName Then OutputFieldsName = False
 If OutputFieldsName Then
    For i =  0  To rs.Fields.Count -  1 
    OutputRange.Offset( 0 , i) = rs.Fields(i).Name
    Next
    Set OutputRange = OutputRange.Offset( 1 ,  0 )
 End If
 DoEvents
OutputRange.CopyFromRecordset rs
rs.Close:  cn.Close
Set cn = Nothing: Set rs = Nothing
End Function
Sub test()
Dim StrSQL$
Sheets( 1 ).[a1].CurrentRegion.ClearContents
StrSQL = "SELECT A.[MOB_NUM], A.[ACC], A.[TARIF_NAME], A.[NAME], A.[DILER_NAME], A.[ADATEFULL], A.[FD], A.[SIM_CARD_N], A.[DOGOVOR], A.[PDATE]" _
& " FROM [Лист1$] as A INNER JOIN " _
& "`C:\Documents and Settings\Дмитрий\Рабочий стол\тест\Реестр по ТС.xls`.[Лист1$] as b ON A.MOB_NUM = b.Федномер"
Call ADO_R_Dmitry(StrSQL, "C:\Documents and Settings\Дмитрий\Рабочий стол\тест\Активация.xls", Sheets( 1 ).[a1], True, True)
End Sub


...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513431
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу в таблицах ни ID, ни FIO
Сравнивать можно, как я понимаю, по номеру СИМ, номеру договора, тномеру телефона...
Быстрый и "простой" - делать запрос помощью ADODB к нужным данным исходных таблиц, в нем же, если надо, накладывая дополнительные условия.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513438
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пропустил, что Дмитрий уже ответил...
Хотя у меня в примере - предложение делать коннект не через JET, а через ODBC, что избавляет от контроля версии Офиса. Раз по телефонному номеру надо сравнивать - замените в запросе поля на нужные.
Кстати, можно не перечислять все поля в SELECT, а сделать "SELECT * FROM ...", и потом почистить два последних столбца результата...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513455
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM,

Можно конечно. :)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513505
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
R Dmitry,

Это я ТСу советовал... Поскольку если начнет пользоваться запросами - лишние знания/умения не помешают никогда.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513539
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
вероятно пока ещё не начнёт - я ему на программерс сделал на словаре и массивах. Очень просил, денег обещал дать :)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513563
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
За что и не люблю кросспостеров. Нафиг, люди стараются...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513578
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp, зато у других есть теперь несколько вариантов.
Хотя у меня вариант AndreTM не работает - т.е. нет результата... :(
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513614
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь, т.е. ты считаешь, что это есть благо?
А на одном форуме автор бы решения не получил? Дело даже не в том.
>> Хотя у меня вариант AndreTM не работает...
это что, показатель? Такого не было, что твой(мой) варианты не работали из-за бестолковости ТС? Я вот смотрю, до сих пор ТС не отписался, хотя получил нужное во многих вариантах. Не, я не претендую на истину в последней инстанции, бурчу(это старческое:-)), но все же ИМХО, это неправильно.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513629
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp,
Ну не знаю...
С точки зрения целесообразности - есть смысл. Тут вариант на SQL, там на массивах, может ещё где-нибудь на MSQuery (файл *.dqy) - тоже кстати вариант неплохой, удобный, если имена файлов известны. А если неизвестны, то можно vbs скриптом запросить, сгенерить *.dqy, запустить на выполнение :)
Есть выбор, не факт, что на одном форуме будет лучшее решение.
Но мне кажется, что мой вариант лучше :) Хотя бы потому, что более управляемый - можно на лету откидывать пробелы, менять типы данных, добавлять доп.условия отбора и т.д.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513631
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то я пропустил, или мне показалось - ты меня бестолковым назвал??? :)
А за ТС похоже что я отписался - мой вариант с программерс подошёл.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513633
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

Ну, результата может не быть по причине отсутствия совпадений по ключу...

И по причине того, что не отрабатывает ODBC при отсутствии источников - вполне. Тогда попробуйте, например, вот это (файлы-источники должны лежать в каталоге с рабочей книгой). В целом, ТСу ведь советовали путь решения, и он достаточно кошерен , а уж частности... - пусть учится.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513636
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121Что-то я пропустил, или мне показалось - ты меня бестолковым назвал??? :)
Да ладно тебе:-) Я и себя в скобках указал.
Ты же помнишь тему, у всех работало, а у тебя - нет. Я уж правда и не вспомню, почему. Но помню, что в последствии и у тебя заработало. Потому как НЕ бестолковый:-)
П.С. это че было? Наезд?:-)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513642
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ладно вам... ТС ведь давно ушел, удовлетворенный по самую маковку.
Hugo121Но мне кажется, что мой вариант лучше :) Хотя бы потому, что более управляемый - можно на лету откидывать пробелы, менять типы данных, добавлять доп.условия отбора и т.д.Ага, SQL Select этим не обладает принципиально, типа
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513672
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, это почему? SQL запрос не обладает гибкостью? От Вас первого такое слышу. Язык SQL и популярен на любых платформах из-за его гибкости. Боюсь, Дима(R Dmitry) тут будет Вам лучшим опонентом, чем я:-)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513673
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTMАга, SQL Select этим не обладает принципиально, типа

+100500
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513676
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
ну я не настолько знаю SQL, мне проще массивами управлять.
Но помню, что с типами данных там были проблемы...
Тут тоже я в первом варианте не учёл, что они могут отличаться - я когда тестировал, забил в середину номеров буквы, чтоб совпадений не было, а когда вернул назад - совпадений тоже нет :(. Оказалось, что типы скачут - добавил всюду Trim(), заодно два зайца убил.
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнение таблиц Exsel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]