powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнение таблиц Exsel
40 сообщений из 40, показаны все 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
Сравнение таблиц Exsel
    #37513677
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну Дим, не ожидал:-)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513680
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121добавил всюду Trim(), заодно два зайца убил.Игорь, в SQL тоже есть trim.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513701
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121ну я не настолько знаю SQL, мне проще массивами управлять.
Но помню, что с типами данных там были проблемы...
Ага... массивы... коллекции... И получаем написание кода для импорта данных в нашу структуру... написание кода (переработку существующих/реализацию собственных алгоритмов) для анализа... фильтрацию и вывод результатов...
Проще возложить вышеуказанные действия на существующих провайдеров, тем более, что поставленная задача прямо укладывалась в выборку с помощью реляционной модели.
А вот если (и когда) перестанет устраивать возможности/быстродействие существующих средств - вот тогда и будем подумать

Впрочем, я ничуть не пытаюсь что-то вам советовать по поводу вашего подхода; единственное - нужно просто помнить, что не "человек для машины", посему желательно иметь "взляд с разных сторон" на решение задачи.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513705
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklpНу Дим, не ожидал:-)Не, просто Дмитрий смайл и акценты выражения увидел, а Игорь , видимо, - нет, поскольку спешил поделиться радостью...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513709
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Да всё я увидел.
Просто я трим не знаю, как в запрос добавить :( - нужно по примерам искать, или запрос в Ацессе править...
Ваш второй вариант работает, но вот если (ради теста) изменить один из номеров, вставив внутрь буквы (получаем в выборке один номер), а потом меняем назад - в выборке один номер, а не два, т.к. типы уже не совпадают.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513714
R Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,

Да Сергей, я имел ввиду что SQL очень мощная штука, ты же наверное помнишь что я в числе первых начал индексировать массив словарем, потом понял что Jet это все делает за меня, так зачем делать все самому если за меня это все сделали.
Я не против словарей и массивов, я их постоянно использую и применяю, но если я вижу что для решения задачи можно использовать sql я предпочитаю использовать именно его.
ps... Ни кого не хотел обидеть или задеть, Игорь (Hugo) на твоих кодах я обучался, да и на твоих Сергей тоже.
Отдельное спасибо стартопикам, за то что не дают расслабляться нашим извилинам :) и держат их в тонусе :).
С уважением, Дмитрий(R Dmitry)
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513716
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

Давайте так - что я, что Дмитрий - мы _предполагали_ , что ключевым будет определенное поле, определенного типа, одинаковое в обеих таблицах. ReadOnly at ThisMoment, ибо источники по определению. То есть конкретные данные. И рассуждения на тему (не)явного приведения, изменения в предпроцессе, и всего прочего - бессмысленны. Вот если у ТС на его _реальных_ данных возникнут проблемы - тогда и будем посмотреть...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513724
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
Ну да, если файлы генерятся программно, то так и будет, что типы неизменны и всё ОК. Мой первый вариант тоже вполне отработал без этих предосторожностей.
Но вот тут вспомнилось - гляньте файл, кто ещё не видел. Хоть и оффтоп по теме, но всёж...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513731
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, мы-то вполне друг-друга поняли:-) Хорош расшаркиваться. А вот по-поводу ТС вопрос завис. Игорь, на дружественном форуме он тебе задал конкретный вопрос по ассеss. Почему бы не направить его(а заодно и по соске треснуть) сюда? Ну, пусть хоть отпишется в своей теме. Сомневаюсь, что у Димы и AndreTM прибавится энтузиазма, но все же...
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513734
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp,
Да, точно, извини, сейчас. :), ......
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513767
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hugo121,

Да, с преобразованием типов в Excel тяжко...
Ну, ошибается провайдер затем - ну так что же?
Зачем придумывать что-то? - достаточно в "Реестре" сделать "Федномер" гарантированно отпределенного типа: например, для текстового - добавить одинарную кавычку в начало строки при формировании значения (кстати, если вы в своем примере так и сделаете - выборка снова будет ОК)... Если же юзеры сами правят этот файл - повесить реакцию на изменение столбца... В целом, проще задать правила для источника данных, чем экспериментировать с "обзором всех возможных вариантов" при составлении выборок.
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513784
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, Вы не получали от меня личного сообщения?
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513789
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
kuklpAndreTM, Вы не получали от меня личного сообщения?
вопрос только - куда было отправлено?
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513796
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,
andre_tm@mail.Ru - но я не уверен, что отправил, у меня крысу летучую переклинило. Значит не получилось, или адрес не тот?
...
Рейтинг: 0 / 0
Сравнение таблиц Exsel
    #37513797
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp,
kuklpAndreTM,
andre_tm@mail.Ru - но я не уверен, что отправил, у меня крысу летучую переклинило. Значит не получилось, или адрес не тот?
Адрес тот. А вот письма - немА
А прямо через интерфейс Майла нельзя было? Или с уведомлением...
Впрочем, можно же и асей или скайпом.
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сравнение таблиц Exsel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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