Страницы: 1
RSS
Проверка и копирование определенного количества символов, разделенных запятой(любым другим символом)
 

Приветствую!

Прошу помощи с макросом:

На «Листе 1» в ячейке «A1» значение – «7», в ячейке «A2» значение – «909», в ячейке «A3» значение – «666». На «Листе 2» в ячейке «A1» значение – «335,696,22,909,55».

Алгоритм следующий: берем ячейку «A1» на «Листе1» и сравниваем с ячейкой  «A1» на «Листе2».  Если значения «7» нет в ячейке «A1» на «Листе2» то копируем значение в ячейку «A1» на «Листе2», отделив его запятой. Если есть, проверяем следующую ячейку на «Листе 1».
 
Ваше описание нечеткое/неясна. Что дальше:
1) сравнение "А1" на Лист1 с "А1", "А2", "А3", "А4", ... и так дальше, на Лист2, потом сравнение "А2" на Лист1 с "А1", "А2", "А3", "А4", ... и так дальше, на Лист2 ... и так дальше ?
Или
2) сравнение "А1", "А2", "А3", "А4", ... и так дальше, на Лист1 с (только) "А1" на Лист2 ?
Или
3) сравнение "А1" на Лист1 с "А1" на Лист2, потом сравнение "А2" на Лист1 с "А2" на Лист2 ... и так дальше ?
Пригодился бы какой-то пример (результатов) за несколько записей.
 
Постараюсь описать проблему понятнее:

Допустим на Листе1 у нас заполнены три ячейки, A1 со значением 7, A2 со значением 55, A3 со значением 48. А на Листе2  заполнена одна ячейка, допустим B1 со значением 335,696,22,909,55. Необходимо три эти ячейки на Листе1 сравнить с ячейкой B1 на Листе2. То есть берем, например 55 и ищем этот текст в ячейке B1, если находим, то ничего не делаем, если нет, то добавляем в конец строки, отделяя запятой.
 
Значит это вариант 2:
Код
Option Explicit

Sub a_b_c_v0()
Dim JachList1, JachList2
Dim indx As Long, i As Long, r As Long: r = 1
Dim shL1 As Worksheet: Set shL1 = ThisWorkbook.Sheets("List1")
Dim shL2 As Worksheet: Set shL2 = ThisWorkbook.Sheets("List2")

    If Trim(shL2.Cells(1, 1).Value) <> "" Then
        JachList2 = Split(shL2.Cells(1, 1).Value, ",", -1, 1)
        indx = UBound(JachList2)
        
        Do Until Trim(shL1.Cells(r, 1).Value) = ""
            JachList1 = Trim(CStr(shL1.Cells(r, 1).Value))
            
            For i = 0 To indx
                If JachList1 = Trim(CStr(JachList2(i))) Then Exit For
            Next
            
            If i > indx Then shL2.Cells(1, 1).Value = Trim(shL2.Cells(1, 1).Value) & "," & JachList1
            
            r = r + 1
        Loop
        
    End If
    
    Set shL1 = Nothing
    Set shL2 = Nothing
End Sub
 
ocet p, спасибо большое!
Страницы: 1
Наверх