Страницы: 1
RSS
Сравнение двух массивов по критерию
 
Добрый день, У меня есть два больших массива данных. В обоих есть столб с ФИО и рядом в строке номера телефонов. В одном массиве оригинал а в другом измененные номера (из числа тех людей что в 1 массиве). Мне необходимо создать функцию, которая будет по именам из второго массива искать строку с именем в 1 массиве, затем сравнивать номера из 1 массива напротив имени с номерами из второго массива в строке с найденным именем.
Я только начал разбираться в макросах и попробовал написать 2 но мне не хватает знаний:
Код
Sub poiskimeni()
    Dim x As Long
    Dim fio As String
    Dim poiskimeni As Range
    fio = Cells(2, 12).Value
    x = 0
    Set poiskimeni = Range("B:B")
    Set poiskimeni = Intersect(poiskimeni, poiskimeni.Parent.UsedRange)
        For Each Row In poiskimeni
            If Row = fio Then
            x = x + 1
            End If

        Next
    Cells(2, 15).Value = x
End Sub
Этот макрос ищет совпадение в столбце с именем,(фактически работает как СЧЕТЕСЛИ) но мне необходимо чтобы он выдавал ссылку на строку для следующего (переменные заданы вручную мной)
Код
Sub Poisk()
Dim pole1 As Range
Dim polepoiska As Range
Dim x As Integer
x = 0
Set pole1 = Range("M2:N2")
Set polepoiska = Range("C2:E2")
u1 = pole1.Columns.Count
u2 = polepoiska.Columns.Count
    For Each u1 In pole1
        For Each u2 In polepoiska
            If u2 = u1 Then
            x = x + 1
            End If
        Next
    Next
    Cells(2, 16).Value = x
End Sub
Этот ищет совпадающие номера в строках (переменные заданы вручную мной).
Мне надо их объединить в функцию с переменными fio,poiskimeni,pole1,polepoiska. Которая будет выдавать "Совпадают такие-то номера" (закраску повторов смогу сам сделать). Прошу подсказать и исправить недочеты.
Пример во вложении.
Изменено: MistoLife - 28.12.2016 04:52:55
 
Цитата
MistoLife написал:
функцию, которая будет по именам из второго массива строку
Будет что?
Цитата
MistoLife написал:
из второго массива строку в с этим человеком
Это вообще не переварил ))
 
Если задача практическая, а не тренировочная, то почему не использовать просто ВПР/ГПР? что-то типа "если(впр(имя2;массив1;2;0)=номер2;"совпало";"не совпало")

PS сорри, не увидел, что номеров много в строке
Изменено: Максим Зеленский - 27.12.2016 16:04:16
F1 творит чудеса
 
Юрий М
Согласен, у меня плохо с пояснением того что надо)
Сейчас подправлю
Изменено: MistoLife - 29.12.2016 08:51:10
 
Максим Зеленский
Да, в примере только 2-3 столбца, в оригинале сами номера больше и столбцов у некоторых до 10.
Изменено: MistoLife - 29.12.2016 08:50:56
 
А куда результат работы функции должен записываться?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев
Непосредственно в ячейку куда вводится функция.
Изменено: MistoLife - 29.12.2016 08:50:34
 
MistoLife, нарисуйте в примере, что Вы хотите получить на выходе. Не надо писать макросы и формулы, просто рукам нарисуйте "хотелку".
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Не всё понятно, но м.б. формулами обойтись?
Изменено: Михаил Лебедев - 28.12.2016 09:50:16 (Что-то перемудрил... ЗАМЕНА ФАЙЛА!)
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Или м.бб. просто с пом. условного форматирования выделять повторы цветом?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев,
УФ не подойдет, номера строк в двух массивах с одинаковыми именами не совпадают. К тому же это не порядковые номера, это номера телефонов. Так же стоит учитывать что в  оригинале в 1 массиве около 8 тыс. строк а во 2: 3-4 тыс.
 
Тема не актуальна, сделал сам, можно закрывать.
Страницы: 1
Наверх