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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 11:29   #11
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну так осталось совсем немного доработать - циклом по массиву b извлекаем из словаря посчитанное количество, заменяем им значение в b.
Затем выгружаем обновлённый b рядом с старым b.

Код:
Sub compare()
    Dim a(), b(), i As Long

    a = [a7:a37].Value    'äė˙ ņåńņą
    b = [b7:b27].Value    'äė˙ ņåńņą
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(b)
            .Item(b(i, 1)) = 0
        Next
        For i = 1 To UBound(a)
            If .exists(a(i, 1)) Then .Item(a(i, 1)) = .Item(a(i, 1)) + 1
        Next
        For i = 1 To UBound(b)
            b(i, 1) = .Item(b(i, 1))
        Next
    End With
    [e7].Resize(UBound(b), 1) = b
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 26.08.2013 в 11:34.
Hugo121 вне форума Ответить с цитированием
Старый 26.08.2013, 11:32   #12
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите еще вариант.
На больших объемах не проверял, но работу с ячейками листа исключил.
Вложения
Тип файла: rar совпадения_3.rar (9.6 Кб, 11 просмотров)
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 26.08.2013 в 11:43.
SAS888 вне форума Ответить с цитированием
Старый 26.08.2013, 11:48   #13
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Hugo121, Супер!
Спасибо большое.
так постепенно, я, благодаря Вам и осилю словари
ЗЫ а весы почему-то опять не срабатывают
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.08.2013, 11:57   #14
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

SAS888, так быстрее, но не намного.
В любом случае, код в копилку.
Мне еще нужно будет суммы считать, по типу СУММЕСЛИ(), правда там в массиве b будут уникальные значения
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.08.2013, 12:04   #15
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию По аналогии суммы

Вот проба файла с суммированием, но пока все мимо.
Здесь данные в массиве b уникальны.
Вложения
Тип файла: zip совпадения_суммы.zip (11.4 Кб, 10 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.08.2013, 12:05   #16
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну для сумм можно сделать аналогичный параллельный словарь.
В одном x+1, в другом x+y.
Затем выгружаем два рядом (ну или делаем типа итогового b, но пошире, заполняем результатами его).
Это если лень городить словарь с массивом в item или привязывать другой массив к словарю (в словаре храним индекс массива, в массиве всё собираем).
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.08.2013, 12:08   #17
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Если только суммы без количества повторов:
Код:
                For i = 1 To UBound(a)
                    If .exists(a(i, 1)) Then .Item(a(i, 1)) = .Item(a(i, 1)) + a(i, 2)
                Next
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.08.2013, 12:24   #18
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Если только суммы без количества повторов:
спасибо, буду пробовать
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 26.08.2013, 12:33   #19
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Но на практике возможны случаи суммирования текста - сразу будет ошибка. Т.е. ещё нужно навесить проверку/отсев таких данных. Ну это конечно зависит от данных - если это автоматическая выгрузка, то вполне вероятно будет однотипно и без сюрпризов.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 26.08.2013, 12:41   #20
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Да, насчет форматов сумм все нормально.
А вот с макросом.
Внес Ваши изменения, что-то не получается у меня.
Вложения
Тип файла: zip совпадения_суммы2.zip (9.5 Кб, 7 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно сравнить два массива указателей типа char Никнейм94 C++ Builder 2 22.05.2013 10:53
Сравнить два ассоциативных массива и вывести одинаковые значения. livesport PHP 1 20.10.2012 15:10
нужен макрос на выделение значения из массива в отдельный столбец 30gb Microsoft Office Excel 3 14.01.2011 09:06