Добрый день, помогите решить один вопрос. Нужен макрос для сверки таблиц (см. файл). В файле указаны таблицы желтые и синие (для примера взял только по две). Нужен макрос который будет сверять желтые таблицы с синими. Сверка: 1 - допустим брал "Обозначение 1" F2 находил его в столбце 1 синей таблицы и сравнивал их количество, если количество одинаково то брал обозначение "куда входит 1" H2 находил его в столбце в столбце 2 синей таблицы и сравнивал их количество, если они одинаковы то он находил обозначение из столбца H (которое последнее сверял) в столбце A ( А2) смотрел куда оно входит (С2) находило в 4 синем столбце и сравнивало их количество.
2 - если в этой цепочки попадалось обозначение с разным количеством (но количество выше входящих одинаково) необходимо составление таблицы (см. файл, итог таблица) В таблице будет указываться обозначение с разным количеством, количество и куда входит (последнее обозначение где заканчивается цепочка проверки для данного обозначения).
обозначения могут повторятся но быть с разной входимостью, необходимо что бы смотрел все варианты.И да обозначения не всегда находятся друг на против друга (необходимо, что бы они искал обозначение по всему столбцу). (Таблицы в рабочей версии не покрашены, покрасил для удобства) Только ячейка куда входит находится на одной строчке с обозначением (например для обозначения 1 это куда входит 1. а для обозначения 2 куда входит 2)
Добрый день, помогите решить один вопрос. Нужен макрос для сверки таблиц (см. файл). В файле указаны таблицы желтые и синие (для примера взял только по две). Нужен макрос который будет сверять желтые таблицы с синими. Сверка: 1 - допустим брал "Обозначение 1" F2 находил его в столбце 1 синей таблицы и сравнивал их количество, если количество одинаково то брал обозначение "куда входит 1" H2 находил его в столбце в столбце 2 синей таблицы и сравнивал их количество, если они одинаковы то он находил обозначение из столбца H (которое последнее сверял) в столбце A ( А2) смотрел куда оно входит (С2) находило в 4 синем столбце и сравнивало их количество.
2 - если в этой цепочки попадалось обозначение с разным количеством (но количество выше входящих одинаково) необходимо составление таблицы (см. файл, итог таблица) В таблице будет указываться обозначение с разным количеством, количество и куда входит (последнее обозначение где заканчивается цепочка проверки для данного обозначения).
обозначения могут повторятся но быть с разной входимостью, необходимо что бы смотрел все варианты.И да обозначения не всегда находятся друг на против друга (необходимо, что бы они искал обозначение по всему столбцу). (Таблицы в рабочей версии не покрашены, покрасил для удобства) Только ячейка куда входит находится на одной строчке с обозначением (например для обозначения 1 это куда входит 1. а для обозначения 2 куда входит 2)Ant645
У вас в строке 1 опечатка 'Обознаяение 1' Можно использовать Find (для нахождения 'Обозначение 1' в синей таблице) и циклы по строкам в найденном столбце. Какой конкретно вопрос не получается, а то написанное вами смахивает на ТЗ.
Цитата
1 - допустим брал "Обозначение 1" F2
У вас в строке 1 опечатка 'Обознаяение 1' Можно использовать Find (для нахождения 'Обозначение 1' в синей таблице) и циклы по строкам в найденном столбце. Какой конкретно вопрос не получается, а то написанное вами смахивает на ТЗ.Kuzmich
Kuzmich, Здравствуйте! Возможно я те точно написал. Я имел ввиду что я взял число в ячейке F2 в столбце "обозначение 1". Суть такая что значение в F2 входит в число ячейки H2, потом число из ячейки H2 расположено в столбце А (например А2), и данное число входит в число расположенное в столбце С (например С2). Но одно значение может входить в несколько других значений (например в столбце А. число 11 входит и в 122 и в 543). Я только пытаюсь разбираться в макросах, и я не могу пока написать его(
Kuzmich, Здравствуйте! Возможно я те точно написал. Я имел ввиду что я взял число в ячейке F2 в столбце "обозначение 1". Суть такая что значение в F2 входит в число ячейки H2, потом число из ячейки H2 расположено в столбце А (например А2), и данное число входит в число расположенное в столбце С (например С2). Но одно значение может входить в несколько других значений (например в столбце А. число 11 входит и в 122 и в 543). Я только пытаюсь разбираться в макросах, и я не могу пока написать его(Ant645
я взял число в ячейке F2 в столбце "обозначение 1".
[vba]
Код
Set iОбозначение1 = Range("F2")
[/vba]
Цитата
потом число из ячейки H2 расположено в столбце А (например А2)
[vba]
Код
Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
[/vba]
Цитата
данное число входит в число расположенное в столбце С (например С2)
[vba]
Код
Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
[/vba] [vba]
Код
Sub NA() Dim i As Long Dim iLastRow As Long Dim iКудаВходит1 As Range Dim iКудаВходит2 As Range Dim iОбозначение1 As Range Dim FAdr As String iLastRow = Cells(Rows.Count, "B").End(xlUp).Row Set iОбозначение1 = Range("F2") 'ищем в столбце А значение из столбца Н Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole) If Not iКудаВходит1 Is Nothing Then FAdr = iКудаВходит1.Address 'адрес первого вхождения Do Set iКудаВходит2 = iКудаВходит1.Offset(, 2) 'ищем дальше по столбцу А, есть лиеще вхождение? Set iКудаВходит1 = Columns("A").FindNext(iКудаВходит1) Loop While iКудаВходит1.Address <> FAdr End If End Sub
[/vba] Пример кода нахождения вхождений. Попробуйте разобраться.
Цитата
я взял число в ячейке F2 в столбце "обозначение 1".
[vba]
Код
Set iОбозначение1 = Range("F2")
[/vba]
Цитата
потом число из ячейки H2 расположено в столбце А (например А2)
[vba]
Код
Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole)
[/vba]
Цитата
данное число входит в число расположенное в столбце С (например С2)
[vba]
Код
Set iКудаВходит2 = iКудаВходит1.Offset(, 2)
[/vba] [vba]
Код
Sub NA() Dim i As Long Dim iLastRow As Long Dim iКудаВходит1 As Range Dim iКудаВходит2 As Range Dim iОбозначение1 As Range Dim FAdr As String iLastRow = Cells(Rows.Count, "B").End(xlUp).Row Set iОбозначение1 = Range("F2") 'ищем в столбце А значение из столбца Н Set iКудаВходит1 = Columns("A").Find(iОбозначение1.Offset(, 2), , xlValues, xlWhole) If Not iКудаВходит1 Is Nothing Then FAdr = iКудаВходит1.Address 'адрес первого вхождения Do Set iКудаВходит2 = iКудаВходит1.Offset(, 2) 'ищем дальше по столбцу А, есть лиеще вхождение? Set iКудаВходит1 = Columns("A").FindNext(iКудаВходит1) Loop While iКудаВходит1.Address <> FAdr End If End Sub
[/vba] Пример кода нахождения вхождений. Попробуйте разобраться.Kuzmich
это вы описали как работает принцип нахождения куда входит. Но самое сложное что необходимо что бы он делал сравнения на каждом уровне количества с синей таблицей. Выстраивал цепочку и каждый этап сравнивал их количество.
вот три числа и каждое куда то входит и у каждого свое количество. Так вот нужно что бы макрос проверял их количество желтой и синей таблица на предмет того что разное количество но при это у вышестоящих одинаковое количество
у 44 разное количество. а у 133 нет, а должно быть у 133 разное количество так как у нижних чисел разное. и выдавал в отдельные ячейки итог с желтой и синей таблицы где различия
это вы описали как работает принцип нахождения куда входит. Но самое сложное что необходимо что бы он делал сравнения на каждом уровне количества с синей таблицей. Выстраивал цепочку и каждый этап сравнивал их количество.
вот три числа и каждое куда то входит и у каждого свое количество. Так вот нужно что бы макрос проверял их количество желтой и синей таблица на предмет того что разное количество но при это у вышестоящих одинаковое количество
у 44 разное количество. а у 133 нет, а должно быть у 133 разное количество так как у нижних чисел разное. и выдавал в отдельные ячейки итог с желтой и синей таблицы где различияAnt645