Здравствуйте! Подскажите макрос, который сравнит данные в столбцах и при нахожденнии соответствия выведет результат в ячейку. В файле пример. Спасибо!
Здравствуйте! Подскажите макрос, который сравнит данные в столбцах и при нахожденнии соответствия выведет результат в ячейку. В файле пример. Спасибо!pechkin
Sub результат() a = Range("B2:G8").Value 'диапазон в массив For j = 3 To UBound(a, 2) 'идём по колонкам от 3 до последней For i = 1 To UBound(a) - 1 'идём по строкам от 1 до предпоследней, на последней слово "результат 1 - 4" If a(i, 1) <> a(i, j) Then Exit For 'сравниваем значения, если не совпало то переходим на новую колонку Next 'если счётчик строк равен количеству элементов массива (прошли весь массив и всё совпало) то 'берём последнее значение из массива из соотв. колонки в ячейку на лист If i = UBound(a) Then Cells(11, 1) = a(UBound(a), j) Next End Sub
[/vba]
[vba]
Код
Sub результат() a = Range("B2:G8").Value 'диапазон в массив For j = 3 To UBound(a, 2) 'идём по колонкам от 3 до последней For i = 1 To UBound(a) - 1 'идём по строкам от 1 до предпоследней, на последней слово "результат 1 - 4" If a(i, 1) <> a(i, j) Then Exit For 'сравниваем значения, если не совпало то переходим на новую колонку Next 'если счётчик строк равен количеству элементов массива (прошли весь массив и всё совпало) то 'берём последнее значение из массива из соотв. колонки в ячейку на лист If i = UBound(a) Then Cells(11, 1) = a(UBound(a), j) Next End Sub
Option Explicit Sub pechkin() Static Counter As Long Dim Offset_Point As Long Dim Count_Point As Long Dim Sum_Point As Long Dim Base As Range Set Base = [b2:b7] Offset_Point = 2 + Counter For Each Base In Base If Base = Base.Offset(, Offset_Point) Then Count_Point = 1 Else Count_Point = 0 Sum_Point = Sum_Point + Count_Point Next Base If Sum_Point = 6 Then [a11] = [b8].Offset(, Offset_Point) Counter = Counter + 1 If Offset_Point > 5 Then Counter = 0 ElseIf Offset_Point > 5 Then Exit Sub Else Call pechkin End If End Sub
[/vba]
Вариант:[vba]
Код
Option Explicit Sub pechkin() Static Counter As Long Dim Offset_Point As Long Dim Count_Point As Long Dim Sum_Point As Long Dim Base As Range Set Base = [b2:b7] Offset_Point = 2 + Counter For Each Base In Base If Base = Base.Offset(, Offset_Point) Then Count_Point = 1 Else Count_Point = 0 Sum_Point = Sum_Point + Count_Point Next Base If Sum_Point = 6 Then [a11] = [b8].Offset(, Offset_Point) Counter = Counter + 1 If Offset_Point > 5 Then Counter = 0 ElseIf Offset_Point > 5 Then Exit Sub Else Call pechkin End If End Sub