Я пытаюсь создать код для проверки двух условий одновременно из моего файла данных. В настоящее время мой сценарий работает нормально, потому что он проверяет только название бренда в столбце A. Однако я также хочу проверить категорию в столбце B: "Sun" или "Vista". Конструктивно я хочу что-то вроде:
For i = 2 to Last_row
If Cells(i,1).value = "BananaRepublic" and Cells(i, 2).value = "Sun" or "Vista" then,
Row(i).Copy
Worksheet(new_worksheet).Paste
Пожалуйста, обратите внимание: в среднем есть более 30 различных брендов, которые мне нужно указать в этом списке, которые должны соответствовать их значению в столбце B (Sun / Vista ), а затем мне нужно повторить это для 20 различных макросов, каждый для различной комбинации названий брендов и категории Sun / Optical. Делать это по отдельности кажется очень неэффективным. Есть ли лучшее решение?
Вот что я уже сделал:
Option Compare Text
Sub StarOptical()
'Define all variables
Dim customer_name As String
Dim sheetName As String
sName = ActiveSheet.Name
'ActiveWorkbook.Worksheets(sName).Sort.SortFields.Clear
'Enter the Customer Name here
customer_name = "StarOptical"
Sheets.Add.Name = customer_name
'Copy same header to the new worksheet
Worksheets(sName).Rows(1).Copy
Worksheets(customer_name).Cells(1, 1).Select
ActiveSheet.Paste
'Find the last row of the report
last_row = Worksheets(sName).Cells(Rows.Count, 1).End(xlUp).Row
'Start the loop and scan through each row for listed brands
For i = 2 To last_row
'Update the names of the approved brands in the line below
If Worksheets(sName).Cells(i, 1).Value = "ADENSCO" Or Worksheets(sName).Cells(i, 1).Value = "BANANAREPUBLI" Or Worksheets(sName).Cells(i, 1).Value = "BOSS(HUB)" Then
Worksheets(sName).Rows(i).Copy
Worksheets(customer_name).Activate
last_row_new = Worksheets(customer_name).Cells(Rows.Count, 1).End(xlUp).Row
Worksheets(customer_name).Cells(last_row_new + 1, 1).Select
ActiveSheet.Paste
End If
Next
Application.CutCopyMode = False
Worksheets(customer_name).Cells(1, 1).Select
End Sub