Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/макрос сравнения 2х листов одного файла по 2м столбцам - Страница 3 - Мир MS Excel

Старая форма входа
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос сравнения 2х листов одного файла по 2м столбцам (Формулы)
макрос сравнения 2х листов одного файла по 2м столбцам
Hugo Дата: Среда, 30.10.2013, 11:14 | Сообщение № 41
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну да, можно ведь сразу этот огромный текст обрабатывать - так должно быть удобнее.
К тому же как там из текста получены даты - это ещё нужно посмотреть :(
Но на такую работу я не подписываюсь - есть сейчас другая работа...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу да, можно ведь сразу этот огромный текст обрабатывать - так должно быть удобнее.
К тому же как там из текста получены даты - это ещё нужно посмотреть :(
Но на такую работу я не подписываюсь - есть сейчас другая работа...

Автор - Hugo
Дата добавления - 30.10.2013 в 11:14
NICK31 Дата: Среда, 30.10.2013, 11:19 | Сообщение № 42
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, вся база изначально выходит на 10 млн записей в текстовом формате, чтобы ее как-то разбить,наши автоматизаторы,другой отдел,выгружает и разбивает ее,на несколько эксель файлов,другого придумать не могут
 
Ответить
СообщениеHugo, вся база изначально выходит на 10 млн записей в текстовом формате, чтобы ее как-то разбить,наши автоматизаторы,другой отдел,выгружает и разбивает ее,на несколько эксель файлов,другого придумать не могут

Автор - NICK31
Дата добавления - 30.10.2013 в 11:19
nilem Дата: Среда, 30.10.2013, 11:24 | Сообщение № 43
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
А давайте попробуем, для интереса. Примерчик можете показать?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеА давайте попробуем, для интереса. Примерчик можете показать?

Автор - nilem
Дата добавления - 30.10.2013 в 11:24
Hugo Дата: Среда, 30.10.2013, 11:25 | Сообщение № 44
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Идиоты. Небось все молодые, недавние студенты?

А может и не идиоты - сделаешь работу за пару секунд - заплатят за пару секунд... А так пару часов вроде как при деле... :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеИдиоты. Небось все молодые, недавние студенты?

А может и не идиоты - сделаешь работу за пару секунд - заплатят за пару секунд... А так пару часов вроде как при деле... :)

Автор - Hugo
Дата добавления - 30.10.2013 в 11:25
NICK31 Дата: Среда, 30.10.2013, 11:28 | Сообщение № 45
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

nilem, если бы мог...нет у меня этих данных!
 
Ответить
Сообщениеnilem, если бы мог...нет у меня этих данных!

Автор - NICK31
Дата добавления - 30.10.2013 в 11:28
NICK31 Дата: Среда, 30.10.2013, 11:29 | Сообщение № 46
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, второй вариант более подходит,там дяди сидят...и такие....что я их мир не понимаю
 
Ответить
СообщениеHugo, второй вариант более подходит,там дяди сидят...и такие....что я их мир не понимаю

Автор - NICK31
Дата добавления - 30.10.2013 в 11:29
nilem Дата: Среда, 30.10.2013, 11:31 | Сообщение № 47
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
nilem, если бы мог...нет у меня этих данных!

Ну, тогда словари

[offtop]"Словари-и-и вы мои словари-и-и "
песня такая есть :)
[/offtop]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
nilem, если бы мог...нет у меня этих данных!

Ну, тогда словари

[offtop]"Словари-и-и вы мои словари-и-и "
песня такая есть :)
[/offtop]

Автор - nilem
Дата добавления - 30.10.2013 в 11:31
Hugo Дата: Среда, 30.10.2013, 11:41 | Сообщение № 48
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну текст ведь тоже по словарю нужно было бы проверять :)
Схема ведь не меняется - сперва основную базу в словарь, затем читаем эти миллионы строк по-одной (средствами FSO), извлекаем из строки данные, проверяем по словарю, пишем сразу результат в выходной текст.
Ну или как вариант можно собирать результат в коллекцию (заодно сразу и повторы отсеются), затем в конце из коллекции переписать куда угодно.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу текст ведь тоже по словарю нужно было бы проверять :)
Схема ведь не меняется - сперва основную базу в словарь, затем читаем эти миллионы строк по-одной (средствами FSO), извлекаем из строки данные, проверяем по словарю, пишем сразу результат в выходной текст.
Ну или как вариант можно собирать результат в коллекцию (заодно сразу и повторы отсеются), затем в конце из коллекции переписать куда угодно.

Автор - Hugo
Дата добавления - 30.10.2013 в 11:41
NICK31 Дата: Среда, 30.10.2013, 12:11 | Сообщение № 49
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

а вот и я))проверил список,только он не выдал одного клиента,который написан был с 2 пробелами после фамилии, а в другом 1 пробел!как быть?
 
Ответить
Сообщениеа вот и я))проверил список,только он не выдал одного клиента,который написан был с 2 пробелами после фамилии, а в другом 1 пробел!как быть?

Автор - NICK31
Дата добавления - 30.10.2013 в 12:11
Hugo Дата: Среда, 30.10.2013, 12:18 | Сообщение № 50
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Я выше говорил про application.trim() - как в воду глядел :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЯ выше говорил про application.trim() - как в воду глядел :)

Автор - Hugo
Дата добавления - 30.10.2013 в 12:18
NICK31 Дата: Среда, 30.10.2013, 12:21 | Сообщение № 51
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

то есть вместо trim поставить application.trim()???
 
Ответить
Сообщението есть вместо trim поставить application.trim()???

Автор - NICK31
Дата добавления - 30.10.2013 в 12:21
Hugo Дата: Среда, 30.10.2013, 12:33 | Сообщение № 52
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну да. Этот экселевский трим в отличие от обычного вбашного убирает лишние сдвоенные пробелы и между слов.
Но конечно шевелиться будет медленнее.


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу да. Этот экселевский трим в отличие от обычного вбашного убирает лишние сдвоенные пробелы и между слов.
Но конечно шевелиться будет медленнее.

Автор - Hugo
Дата добавления - 30.10.2013 в 12:33
NICK31 Дата: Среда, 30.10.2013, 12:35 | Сообщение № 53
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, сейчас посмотрим))
 
Ответить
СообщениеHugo, сейчас посмотрим))

Автор - NICK31
Дата добавления - 30.10.2013 в 12:35
NICK31 Дата: Среда, 30.10.2013, 12:37 | Сообщение № 54
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

я написал application.trim() он не находит этого клиента...
 
Ответить
Сообщениея написал application.trim() он не находит этого клиента...

Автор - NICK31
Дата добавления - 30.10.2013 в 12:37
NICK31 Дата: Среда, 30.10.2013, 12:38 | Сообщение № 55
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

в обоих случаях прописывать или в одном только?
 
Ответить
Сообщениев обоих случаях прописывать или в одном только?

Автор - NICK31
Дата добавления - 30.10.2013 в 12:38
Hugo Дата: Среда, 30.10.2013, 13:09 | Сообщение № 56
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну для тех баз, кому нет доверия только... :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНу для тех баз, кому нет доверия только... :)

Автор - Hugo
Дата добавления - 30.10.2013 в 13:09
NICK31 Дата: Среда, 30.10.2013, 13:12 | Сообщение № 57
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

ха...а если и там и там я поставил?результата все равно нет...я тогда не понимаю
 
Ответить
Сообщениеха...а если и там и там я поставил?результата все равно нет...я тогда не понимаю

Автор - NICK31
Дата добавления - 30.10.2013 в 13:12
Hugo Дата: Среда, 30.10.2013, 13:18 | Сообщение № 58
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3252
Репутация: 707 ±
Замечаний: 0% ±

2019
Значит не так поставили.
Смысл в чём - убить в сравниваемых строках возможные непредсказуемые лишние пробелы, оставить только по одному между слов. Для этого используем application.trim(), но только на фамилии - даты по идее даты и там пробелов быть не должно. По идее... :)


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеЗначит не так поставили.
Смысл в чём - убить в сравниваемых строках возможные непредсказуемые лишние пробелы, оставить только по одному между слов. Для этого используем application.trim(), но только на фамилии - даты по идее даты и там пробелов быть не должно. По идее... :)

Автор - Hugo
Дата добавления - 30.10.2013 в 13:18
NICK31 Дата: Среда, 30.10.2013, 14:18 | Сообщение № 59
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, [vba]
Код

Option Explicit

Sub tt()
     Dim a(), i&, ii&, t$

     With Application
         .ScreenUpdating = False

         With CreateObject("Scripting.Dictionary"): .comparemode = 1

             a = Sheets(1).[a1].CurrentRegion.Value    
             For i = 2 To UBound(a)
                 t = Application.Trim(a(i, 1)) & "|" & a(i, 2): .Item(t) = i    
             Next

             a = Sheets(1).[e1].CurrentRegion.Value    
             ReDim b(1 To UBound(a), 1 To 2)    
             For i = 2 To UBound(a)
                 t = Application.Trim(a(i, 1)) & "|" & a(i, 2)
                 If .exists(t) Then     
                     ii = ii + 1
                     b(ii, 1) = a(i, 1)
                     b(ii, 2) = a(i, 2)
                 End If
             Next

         End With

[/vba]
 
Ответить
СообщениеHugo, [vba]
Код

Option Explicit

Sub tt()
     Dim a(), i&, ii&, t$

     With Application
         .ScreenUpdating = False

         With CreateObject("Scripting.Dictionary"): .comparemode = 1

             a = Sheets(1).[a1].CurrentRegion.Value    
             For i = 2 To UBound(a)
                 t = Application.Trim(a(i, 1)) & "|" & a(i, 2): .Item(t) = i    
             Next

             a = Sheets(1).[e1].CurrentRegion.Value    
             ReDim b(1 To UBound(a), 1 To 2)    
             For i = 2 To UBound(a)
                 t = Application.Trim(a(i, 1)) & "|" & a(i, 2)
                 If .exists(t) Then     
                     ii = ii + 1
                     b(ii, 1) = a(i, 1)
                     b(ii, 2) = a(i, 2)
                 End If
             Next

         End With

[/vba]

Автор - NICK31
Дата добавления - 30.10.2013 в 14:18
NICK31 Дата: Среда, 30.10.2013, 14:21 | Сообщение № 60
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 112
Репутация: 0 ±
Замечаний: 0% ±

Hugo, вроде на данный момент работает, но почему-то так же на работе сделал, не работал при большом объеме клиентов
К сообщению приложен файл: 9775420.xlsm (20.5 Kb)
 
Ответить
СообщениеHugo, вроде на данный момент работает, но почему-то так же на работе сделал, не работал при большом объеме клиентов

Автор - NICK31
Дата добавления - 30.10.2013 в 14:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » макрос сравнения 2х листов одного файла по 2м столбцам (Формулы)
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!