Мне нужен код Excel VBA, который копирует данные с одного листа и вставляет их на другой лист, если заданные условия удовлетворены. В рабочей тетради будет два листа (лист1 и лист 2). В основном данные в столбце листа 2 "C" должны быть скопированы в столбец листа 1 "C".
Условия: -
В ЛИСТЕ 1 и 2 будет три столбца A, B, C.
ЕСЛИ ЛИСТ 1 B1 имеет данные, которые мы возьмем («88»). Теперь он должен найти, сколько из них («88») есть на листе 2 B: B.
Если их больше одного, возьмем «4», тогда эти значения «4» sheet2 »C» относятся к листу 1 «A1». Он должен создать еще три строки со значением "sheet1 A1 & B1", после чего эти 4 значения должны быть вставлены в "sheet1" c "рядом с этими четырьмя" Sheet A1 & B1 ". Я не могу выбрать эти 4 SHEET2" C "VALUES
Если есть один" 88 ", он может просто вставить на лист 1" C1 ".
Таким образом, это должно быть сделано для каждого значения в листе 1 B: B.
Хотя бы Скажите, какой код используется для добавления строк со значением ячейки через vba
Как найти значение и скопировать соответствующую ячейку
Sub copythedata()
Dim r As Long, ws As Worksheet, wd As Worksheet
Dim se As String
Dim sf As String
Dim fn As Integer
Dim y As Integer
Dim lrow As Long
Set ws = Worksheets("sheet2")
Set wd = Worksheets("sheet1")
y = 123
x = wd.Cells(Rows.Count, 1).End(xlUp).Row
MsgBox "Last Row: " & x
If x > y Then
wd.Range(wd.Cells(y, 1), wd.Cells(x, 1)).EntireRow.Delete Shift:=xlUp
End If
For r = wd.Cells(Rows.Count, "B").End(xlUp).Row To 2 Step -1
fn = Application.WorksheetFunction.countif(ws.Range("B:B"), wd.Range("B" & r).Value)
If fn = 1 Then
wd.Range("C" & r).Value = ws.Range("C" & r).Value
ElseIf fn > 1 Then
se = wd.Range(wd.Cells(A, r), wd.Cells(B, r)).EntireRow.Copy
wd.Range("A123").Rows(fn - 1).Insert Shift:=xlShiftDown
Else
wd.Range("C" & r).Value = "NA"
End If
Next r
End Sub