![Совет по макросам — вставка строк на новый лист, если в некоторых ячейках указано «НЕТ»](https://rvso.com/image/1502897/%D0%A1%D0%BE%D0%B2%D0%B5%D1%82%20%D0%BF%D0%BE%20%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D0%B0%D0%BC%20%E2%80%94%20%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B0%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%20%D0%BD%D0%B0%20%D0%BD%D0%BE%D0%B2%D1%8B%D0%B9%20%D0%BB%D0%B8%D1%81%D1%82%2C%20%D0%B5%D1%81%D0%BB%D0%B8%20%D0%B2%20%D0%BD%D0%B5%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85%20%D1%8F%D1%87%D0%B5%D0%B9%D0%BA%D0%B0%D1%85%20%D1%83%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BE%20%C2%AB%D0%9D%D0%95%D0%A2%C2%BB.png)
Мне бы хотелось получить совет по использованию VBA и макросов.
Я хотел бы найти способ связать рабочие листы (рабочие листы 1–6) с мастер-листом (рабочий лист 7).
Если строка содержит"НЕТ"в колонке I
(по всемурабочие листы 1–6), можно ли скопировать код и вставить эту строку врабочий лист 7?
Тогда если строка (врабочие листы 1–6) был изменен на"ДА" сможет ли другой код удалить эту строку израбочий лист 7?
Для некоторого контекста,рабочие листы 1–6список рабочих мест и'ДА'&'НЕТ'если клиент заплатил. Если'НЕТ'они добавляются в список должниковрабочий лист 7. Если'ДА'их необходимо исключить из списка должников.
решение1
Этот код поможет вам:
Public Sub debtors()
Dim wkb As Workbook
Dim wks As Worksheet
Dim wksdest As Worksheet
Set wkb = ThisWorkbook
Set wksdest = wkb.Sheets("Sheet7")
wksdest.Rows.Clear 'Clear the contents of Sheet7
destRow = 1 'First row on Sheet7
For i = 1 To 6 'Loop through Sheets 1 to 6
newIndex = Right(Str(i), 1)
thisSheet = "Sheet" + newIndex
Set wks = wkb.Sheets(thisSheet)
wks.Activate
'Selects column I
Columns("I:I").Select
'Find a coincidence with the string "NO"
Set cell = Selection.Find(What:="NO", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'If there is a coincidence (is Not Nothing)
If Not cell Is Nothing Then
firstRow = cell.Row
newRow = cell.Row
'Copy the row and paste on Sheet7
wks.Rows(newRow).Copy
wksdest.Rows(destRow).PasteSpecial xlPasteValues
destRow = destRow + 1
foundValue = True
'Find next coincidences in the same sheet
While foundValue
Set cell = Selection.FindNext(cell)
If Not cell Is Nothing Then
newRow = cell.Row
If newRow <> firstRow Then
wks.Rows(newRow).Copy
wksdest.Rows(destRow).PasteSpecial xlPasteValues
destRow = destRow + 1
Else
foundValue = False
End If
Else
foundValue = False
End If
Wend
End If
Next i
wksdest.Activate
End Sub
Откройте VBA/Macros с помощью ALT+ F11, подЭта рабочая книгавставьте новый модуль и вставьте код с правой стороны.
Выполните его, нажав на зеленый треугольник.
Я прокомментировал код, чтобы вы поняли, как он работает.
Вы также можете запустить его пошагово, нажав на первую строку, а затем пройти каждый шаг, нажимая F8.