Как сделать выборку данных на соответствие другим

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Alex_2006
Сообщения: 22
Зарегистрирован: 14 мар 2006, 10:14

Существует такой массив данных в Эксэле

Сразу извиняюсь за кривую таблицу

Код: Выделить всё

A           B                  C                   D
OL_FIN           ?              DOGOVOR     Управление договорами  
SFP               ?              BUY             Управление снабжением  
OL_KBU         ?               SELL            Управление сбытом  
B_ACT           ?                SKLAD          Складской учет  
B_BALANS      ?                 POSTPOL       Поставщики,получатели  
B_FINANS      ?                 B_KASSA      Касса  
B_HOZOP       ?                 B_FINANS     ФРО  
B_KASSA       ?                  SKLAD2        Матценности  
OL_FIN           ?                 MBP              Учет спецоснастки  
SFP                ?              B_OSN          Основные средства  
 …и т.д.                           B_ACT           Нематериальные активы  
                                   OL_FIN         Контур планир.и упр.фин.
                           …и т.д.              …и т.д
Столбцы C и D состоят из 80 строк
Я вставляю данные из файла в столбец A
Столбец C и D это справочная информация(неизменяемые данные).
Нужен макрос который находит в ячейке столбца A соответствие ячейке в столбце C и переносит в столбец B данные из ячейки столбца D, которые прикреплены к соответствующей ячейке столбца C.
Проще говоря найти совпадение для A в справочнике C и перетащить из справочника D в B название для A. p/s:Формулой никак не получается
Заранее благодарен
Zigi
Сообщения: 32
Зарегистрирован: 18 янв 2005, 16:45
Откуда: СПб

Как это формулой не получается?
Есть замечательная формула ВПР, которая идеально подходит под Вашу задачу.
Alex_2006
Сообщения: 22
Зарегистрирован: 14 мар 2006, 10:14

ВПР уже пробывали
ведь она требует сортировки(уже лажа) и у нас основной критерий текстовые выражения
Дионис
Сообщения: 153
Зарегистрирован: 11 июл 2005, 13:42
Откуда: Крым, Алушта
Контактная информация:

Alex_2006, смотри мой сабж forum/viewtopic.php?t=3898

тема близка к твоей
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Спасибо, хорошая тренировка :shock:

формулами ...
=ВПР(B3;Name_r2;2;0)

макросом...

Код: Выделить всё

Private Sub Макрос_Click()
Range("Name_r3").ClearContents
    
    Dim i As Integer, j As Integer
    Dim r1 As Range
    Dim r2 As Range
    Dim r3 As Range
        Set r1 = Range("Name_r1")
        Set r2 = Range("Name_r2")
        Set r3 = Range("Name_r3")
       
    For i = 1 To r1.Rows.Count
        
        For j = 1 To r2.Rows.Count
            If r1.Cells(i, 1).Value = r2.Cells(j, 1).Value Then
                r3.Cells(i, 1).Value = r2.Cells(j, 2).Value
                GoTo 1
            End If
        Next j
1:
    Next i

End Sub
здесь все в сборе...
http://avsha.narod.ru/Range_r123.rar
Zigi
Сообщения: 32
Зарегистрирован: 18 янв 2005, 16:45
Откуда: СПб

Alex_2006 писал(а):ВПР уже пробывали
ведь она требует сортировки(уже лажа) и у нас основной критерий текстовые выражения
ВПР не требует сортировки если в Диапозоне просмотра (четвертый аргумент) поставить Ложь (0).
Кроме того ВПР спокойно обрабатывает и текстовые выражения.
Alex_2006
Сообщения: 22
Зарегистрирован: 14 мар 2006, 10:14

Avsha, Спасибо огромное за макрос ,Шикарная вещь, а то в этой ВПР формуле есть одна особенность при отсутствии найденного аргумента повторяет предыдущее
Sokl
Сообщения: 451
Зарегистрирован: 12 сен 2005, 08:52
Откуда: ОМ

Работает нормально формула-массив (да и формула-не-массив тоже будет работать): :D

{=ВПР(A1:A6;C1 :D 6;2;ЛОЖЬ)}

ВПР не повторяет предыдущее при отсутствии найденного значения, ВПР возвращает #Н/Д (это ведь не проблема).

P.S.: MS Office 2003...
Ответить