Здравствуйте! Нужна Ваша помощь. Есть макрос который сравнивает столбца по порядку и копирует определенные ячейки (но копирование происходит не так как нужно, в файле указал как нужно). Он почему-то смещает результат. Например 2 -22- 222, 133 но он почему то 133 ставит для 4-21- И количество цифр может быть разное. Как сделать что бы копирование для определенного схожего числа оставалось в нужном диапазоне.
[vba]
Код
Sub Пробник_3()
Dim lLastRowA As Long Dim lLastRowC As Long Dim lLastRowB As Long Dim i As Long Dim rFind As Excel.Range
If Not rFind Is Nothing Then Cells(lLastRowC, "N").Value = Cells(i, "C").Value
lLastRowC = lLastRowC + 1
End If Next i
Application.ScreenUpdating = True
End Sub
[/vba]
Здравствуйте! Нужна Ваша помощь. Есть макрос который сравнивает столбца по порядку и копирует определенные ячейки (но копирование происходит не так как нужно, в файле указал как нужно). Он почему-то смещает результат. Например 2 -22- 222, 133 но он почему то 133 ставит для 4-21- И количество цифр может быть разное. Как сделать что бы копирование для определенного схожего числа оставалось в нужном диапазоне.
[vba]
Код
Sub Пробник_3()
Dim lLastRowA As Long Dim lLastRowC As Long Dim lLastRowB As Long Dim i As Long Dim rFind As Excel.Range
Мне нужно что бы на выходе была таблица которая показывает какое значение куда входит, пример в файле есть, данный макрос вроде сравнивает но вставляет скопированные результаты не правильно) У меня идет сравнение столбца К с F (выдает результат сколько 2 и 4 есть, результат в L), потом результат из L сравниваю с таблицей F (дабы узнать куда они входят, происходит копирования из столбца H - куда входит значение из столбца F), потом результат из H сравниваю со столбцом A (происходит сравнение и копирование куда входит в столбец N из столбца С). Нужно что бы выстраивалась цепочка от 1 значения K до последнего значения куда входит С). Но вхождение может и не в одно число, а в несколько.
Мне нужно что бы на выходе была таблица которая показывает какое значение куда входит, пример в файле есть, данный макрос вроде сравнивает но вставляет скопированные результаты не правильно) У меня идет сравнение столбца К с F (выдает результат сколько 2 и 4 есть, результат в L), потом результат из L сравниваю с таблицей F (дабы узнать куда они входят, происходит копирования из столбца H - куда входит значение из столбца F), потом результат из H сравниваю со столбцом A (происходит сравнение и копирование куда входит в столбец N из столбца С). Нужно что бы выстраивалась цепочка от 1 значения K до последнего значения куда входит С). Но вхождение может и не в одно число, а в несколько.Ant645
Kuzmich, А ну тут может что то не нужно, просто я плохо разбираюсь в VBA я всякое вставлял (скорее всего последние 2 удалить нужно) и Dim lLastRowB As Long тоже удалить. Они не повлияют на результат
Kuzmich, А ну тут может что то не нужно, просто я плохо разбираюсь в VBA я всякое вставлял (скорее всего последние 2 удалить нужно) и Dim lLastRowB As Long тоже удалить. Они не повлияют на результатAnt645
Sub Пробник_4() Dim lLastRowK As Long Dim lLastRowL As Long Dim lLastRowM As Long Dim rFind_F As Range Dim rFind_A As Range Dim i As Long Dim FAdr_F As String Dim FAdr_A As String 'выдает результат сколько 2 и 4 есть в столбце F, результат в L lLastRowK = Cells(Rows.Count, "K").End(xlUp).Row lLastRowL = 2 Range("L2:N1000").ClearContents For i = 2 To lLastRowK 'цикл по значениям столбца К 'ищем в столбце F значения столбца К Set rFind_F = Columns("F").Find(Cells(i, "K"), , xlValues, xlWhole) If Not rFind_F Is Nothing Then 'нашли первое вхождение FAdr_F = rFind_F.Address 'адрес первого вхождения Do Cells(lLastRowL, "L") = rFind_F lLastRowL = lLastRowL + 1 Cells(lLastRowL, "M") = rFind_F.Offset(, 2) lLastRowL = lLastRowL + 1 'ищем в столбце А (обозначение 2) значение из столбца Н (куда входит 1) Set rFind_A = Columns("A").Find(rFind_F.Offset(, 2), , xlValues, xlWhole) If Not rFind_A Is Nothing Then 'нашли первое вхождение FAdr_A = rFind_A.Address 'адрес первого вхождения Do Cells(lLastRowL, "N") = rFind_A.Offset(, 2) Set rFind_A = Columns("A").FindNext(rFind_A) lLastRowL = lLastRowL + 1 Loop While rFind_A.Address <> FAdr_A End If Set rFind_F = Columns("F").Find(Cells(i, "K"), After:=rFind_F) lLastRowL = lLastRowL + 1 Loop While rFind_F.Address <> FAdr_F End If lLastRowL = Cells(Rows.Count, "N").End(xlUp).Row + 2 Next End Sub
[/vba]
Как понял, проверяйте [vba]
Код
Sub Пробник_4() Dim lLastRowK As Long Dim lLastRowL As Long Dim lLastRowM As Long Dim rFind_F As Range Dim rFind_A As Range Dim i As Long Dim FAdr_F As String Dim FAdr_A As String 'выдает результат сколько 2 и 4 есть в столбце F, результат в L lLastRowK = Cells(Rows.Count, "K").End(xlUp).Row lLastRowL = 2 Range("L2:N1000").ClearContents For i = 2 To lLastRowK 'цикл по значениям столбца К 'ищем в столбце F значения столбца К Set rFind_F = Columns("F").Find(Cells(i, "K"), , xlValues, xlWhole) If Not rFind_F Is Nothing Then 'нашли первое вхождение FAdr_F = rFind_F.Address 'адрес первого вхождения Do Cells(lLastRowL, "L") = rFind_F lLastRowL = lLastRowL + 1 Cells(lLastRowL, "M") = rFind_F.Offset(, 2) lLastRowL = lLastRowL + 1 'ищем в столбце А (обозначение 2) значение из столбца Н (куда входит 1) Set rFind_A = Columns("A").Find(rFind_F.Offset(, 2), , xlValues, xlWhole) If Not rFind_A Is Nothing Then 'нашли первое вхождение FAdr_A = rFind_A.Address 'адрес первого вхождения Do Cells(lLastRowL, "N") = rFind_A.Offset(, 2) Set rFind_A = Columns("A").FindNext(rFind_A) lLastRowL = lLastRowL + 1 Loop While rFind_A.Address <> FAdr_A End If Set rFind_F = Columns("F").Find(Cells(i, "K"), After:=rFind_F) lLastRowL = lLastRowL + 1 Loop While rFind_F.Address <> FAdr_F End If lLastRowL = Cells(Rows.Count, "N").End(xlUp).Row + 2 Next End Sub
Kuzmich, Можете еще подсказать, какую нужно повторить команду если добавятся с лево еще таблица где указано куда входит столбец С (по принципу как для столбца H вхождение в первой таблице). Этот макрос работает круто спасибо большое.
Kuzmich, Можете еще подсказать, какую нужно повторить команду если добавятся с лево еще таблица где указано куда входит столбец С (по принципу как для столбца H вхождение в первой таблице). Этот макрос работает круто спасибо большое.Ant645