Здравствуйте! Есть макрос который сравнивает столбцы и выдает результаты в таблицу. Макрос берет значения со столбца "Q" сравнивает с "K" (заполняет столбец "R" и "S", в "R" заполняет по сравнению Q и К, а в S то куда входит (значение со столбца M)). Если в Q и K несколько значений с разной входимостью он отдельно заносит данные для каждого. Потом макрос берет значение которое заносилось в столбец S и находит его в столбце А и заносит куда входит (сравнивает значение F и M и в столбец T копирует значение из H) и так далее. Возникла проблема, что макрос дальше не разбивает на отдельные строки значения, а копирует по несколько штук в один) При этом когда сравнивает следующий уровень он берет только первое значение (например Т4 и Т5, он показал куда входит эти значения только для Т4). Файл прилагаю, вариант как должно быть указат под синим заголовком. Необходимо что бы он разбивал как первые 2 столбца для каждого обозначения но на протяжении всех столбцов. (красным и зеленым показал участки как делает и как должен был разбить) Заранее спасибо за помощь.
Sub Ïðîáíèê_6() Dim lLastRowK AsLong Dim lLastRowL AsLong Dim lLastRowM AsLong Dim rFind_F As Range Dim rFind_A As Range Dim rFind_C As Range Dim i AsLong Dim FAdr_F AsString Dim FAdr_A AsString Dim FAdr_C AsString
'âûäàåò ðåçóëüòàò ñêîëüêî 2 è 3 åñòü â ñòîëáöå K, ðåçóëüòàò â R
lLastRowK = Cells(Rows.Count, "Q").End(xlUp).Row
lLastRowL = 2
Range("R2:U1000").ClearContents
For i = 2To lLastRowK 'öèêë ïî çíà÷åíèÿì ñòîëáöà Q 'èùåì â ñòîëáöå K çíà÷åíèÿ ñòîëáöà Q Set rFind_F = Columns("K").Find(Cells(i, "Q"), , xlValues, xlWhole) IfNot rFind_F IsNothingThen'íàøëè ïåðâîå âõîæäåíèå
FAdr_F = rFind_F.Address 'àäðåñ ïåðâîãî âõîæäåíèÿ Do
Cells(lLastRowL, "R") = rFind_F
lLastRowL = lLastRowL + 1
Cells(lLastRowL, "S") = rFind_F.Offset(, 2)
lLastRowL = lLastRowL + 1 'èùåì â ñòîëáöå K (îáîçíà÷åíèå 2) çíà÷åíèå èç ñòîëáöà N (êóäà âõîäèò 1) Set rFind_A = Columns("F").Find(rFind_F.Offset(, 2), , xlValues, xlWhole) IfNot rFind_A IsNothingThen'íàøëè ïåðâîå âõîæäåíèå
FAdr_A = rFind_A.Address 'àäðåñ ïåðâîãî âõîæäåíèÿ Do
Здравствуйте! Есть макрос который сравнивает столбцы и выдает результаты в таблицу. Макрос берет значения со столбца "Q" сравнивает с "K" (заполняет столбец "R" и "S", в "R" заполняет по сравнению Q и К, а в S то куда входит (значение со столбца M)). Если в Q и K несколько значений с разной входимостью он отдельно заносит данные для каждого. Потом макрос берет значение которое заносилось в столбец S и находит его в столбце А и заносит куда входит (сравнивает значение F и M и в столбец T копирует значение из H) и так далее. Возникла проблема, что макрос дальше не разбивает на отдельные строки значения, а копирует по несколько штук в один) При этом когда сравнивает следующий уровень он берет только первое значение (например Т4 и Т5, он показал куда входит эти значения только для Т4). Файл прилагаю, вариант как должно быть указат под синим заголовком. Необходимо что бы он разбивал как первые 2 столбца для каждого обозначения но на протяжении всех столбцов. (красным и зеленым показал участки как делает и как должен был разбить) Заранее спасибо за помощь.
Sub Ïðîáíèê_6() Dim lLastRowK AsLong Dim lLastRowL AsLong Dim lLastRowM AsLong Dim rFind_F As Range Dim rFind_A As Range Dim rFind_C As Range Dim i AsLong Dim FAdr_F AsString Dim FAdr_A AsString Dim FAdr_C AsString
'âûäàåò ðåçóëüòàò ñêîëüêî 2 è 3 åñòü â ñòîëáöå K, ðåçóëüòàò â R
lLastRowK = Cells(Rows.Count, "Q").End(xlUp).Row
lLastRowL = 2
Range("R2:U1000").ClearContents
For i = 2To lLastRowK 'öèêë ïî çíà÷åíèÿì ñòîëáöà Q 'èùåì â ñòîëáöå K çíà÷åíèÿ ñòîëáöà Q Set rFind_F = Columns("K").Find(Cells(i, "Q"), , xlValues, xlWhole) IfNot rFind_F IsNothingThen'íàøëè ïåðâîå âõîæäåíèå
FAdr_F = rFind_F.Address 'àäðåñ ïåðâîãî âõîæäåíèÿ Do
Cells(lLastRowL, "R") = rFind_F
lLastRowL = lLastRowL + 1
Cells(lLastRowL, "S") = rFind_F.Offset(, 2)
lLastRowL = lLastRowL + 1 'èùåì â ñòîëáöå K (îáîçíà÷åíèå 2) çíà÷åíèå èç ñòîëáöà N (êóäà âõîäèò 1) Set rFind_A = Columns("F").Find(rFind_F.Offset(, 2), , xlValues, xlWhole) IfNot rFind_A IsNothingThen'íàøëè ïåðâîå âõîæäåíèå
FAdr_A = rFind_A.Address 'àäðåñ ïåðâîãî âõîæäåíèÿ Do