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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.01.2012, 22:27   #1
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию Макрос для обработки двух массивов - сопоставление данных

Есть два массива данных (надо сравнить столбец E МАССИВ1 с столбцом E (сумма) МАССИВ2). По структуре массивы разные, но в них есть столбец "сумма" в обоих массивах, по которому надо провести сравнение. Данные в столбце могут повторяться, поэтому необходимо учесть данный факт при выявлении совпадений. При нахождении совпадения скопировать информацию из столбцов A (операция) и C (дата) файла МАССИВ2 в соответствующую строку МАССИВ1.
Понимаю как это надо сделать, но не хватает опыта в использовании формул и макросов. Пробовал реализовать с помощью PLEX формула VLOOKUP2, но там подстановка при совпадении только для первого найденного значения, а не последующих если таковые были найдены ранее.


--------- примечание модератора - вдруг кому пригодится --------------
Цитата:
Надстройка LOOKUP предназначена для сравнения и подстановки значений в таблицах Excel.

Если вам надо сравнить 2 таблицы (по одному столбцу, или по нескольким),
и для совпадающих строк скопировать значения выбранных столбцов из одной таблицы в другую,
надстройка «Lookup» поможет сделать это нажатием одной кнопки.


В настройках программы можно задать:
  • где искать сравниваемые файлы (использовать уже открытый файл, загружать файл по заданному пути, или же выводить диалоговое окно выбора файла)
  • с каких листов брать данные (варианты: активный лист, лист с заданным номером или названием)
  • какие столбцы сравнивать (можно задать несколько столбцов)
  • значения каких столбцов надо копировать в найденные строки (также можно указать несколько столбцов)

Скачать надстройку для сравнения таблиц Excel и копирования данных из одинаковых строк


Последний раз редактировалось EducatedFool; 30.09.2013 в 10:00.
hammerman вне форума Ответить с цитированием
Старый 05.01.2012, 22:32   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Будет нагляднее, если вы выложите пример файла с примером сопоставления
motorway вне форума Ответить с цитированием
Старый 06.01.2012, 07:57   #3
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от motorway Посмотреть сообщение
Будет нагляднее, если вы выложите пример файла с примером сопоставления
Вот ... я и в первый раз выложил, но видно не получилось.
Вложения
Тип файла: rar МАССИВы.rar (7.1 Кб, 35 просмотров)
hammerman вне форума Ответить с цитированием
Старый 06.01.2012, 07:59   #4
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от hammerman Посмотреть сообщение
Есть два массива данных (надо сравнить столбец E МАССИВ1 с столбцом E (сумма) МАССИВ2).
При сравнении надо использовать только столбец с суммами и привязаться только к последовательности проверки. Думаю надо цикл в цикле рассматривать, но как это прописать не знаю. Такая особенность построения МАССИВов. Уникальна последовательность сумм, значения ктр могут повторяться.
hammerman вне форума Ответить с цитированием
Старый 06.01.2012, 10:29   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Проверьте (делал на файле planetы):
Код:
Option Explicit

Sub sr()
    Dim a(), b(), i&, ii&

    a = Sheets("МАССИВ1").[a1].CurrentRegion.Columns(5).Value
    ReDim c(1 To UBound(a), 1 To 2)
    b = Sheets("МАССИВ2").[a1].CurrentRegion.Value
    
    For i = 1 To UBound(a)
        For ii = 1 To UBound(b)
            If a(i, 1) = b(ii, 5) Then
                c(i, 1) = b(ii, 1)
                c(i, 2) = b(ii, 3)
                b(ii, 5) = ""
                Exit For
            End If
        Next ii, i

        Sheets("МАССИВ1").[g1].Resize(UBound(c), 2) = c
    
    End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.01.2012, 10:48   #6
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Привет, Игорь. Прикольно ты гоняешься за ТС:-) Он еще и сюда запостил:
http://forum.msexcel.ru/microsoft_ex...h-t6988.0.html
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 06.01.2012, 11:03   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Привет, Сергей.
Т.к. тут уже за 50 просмотров - то думаю стОит и тут моё решение показать
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 06.01.2012, 11:13   #8
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Привет, Игорь. Прикольно ты гоняешься за ТС:-) Он еще и сюда запостил:
http://forum.msexcel.ru/microsoft_ex...h-t6988.0.html
Уважаемый, kuklp! Я не постил! Есть задача, ктр я к сожалению своими силами не смог решить. Поэтому большое спс Hugo121 за отклик! А не Вам.
hammerman вне форума Ответить с цитированием
Старый 06.01.2012, 11:14   #9
hammerman
Пользователь
 
Регистрация: 03.01.2012
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Привет, Сергей.
Т.к. тут уже за 50 просмотров - то думаю стОит и тут моё решение показать
Спс за оперативность. Это действительно важно для меня.
hammerman вне форума Ответить с цитированием
Старый 06.01.2012, 11:19   #10
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Я за Вас постил. Мне Ваше спасибо... А вот отписаться везде, что Ваша задача решена, было бы порядочно. Чтоб люди зря время не тратили.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание приложений для обработки массивов anastasiya__S Помощь студентам 0 07.04.2011 20:18
Макрос обработки данных для Excel 2007 Python Фриланс 1 16.02.2010 20:47
надо: макрос для обработки данных poll69 Microsoft Office Excel 2 06.02.2010 17:25
Сопоставление данных в двух таблицахъъъ Tanuki-sensei Microsoft Office Access 3 22.05.2009 09:25
Сопоставление данных в двух столбцах plasticman Microsoft Office Excel 4 12.03.2009 17:45