Ниже приведен мой код VBA, который пометит название компании, если это «Климат», «ComRes» или «Остатки».
For i = startrow To lastrow
Company = dbsheet.Range("E" & i).Value
Office = dbsheet.Range("G" & i).Value
If InStr(Company, "Climate") Or (Company = "CT") Or (Company = "DSN") Or (Company = "WR") Then
Label = "Climate"
ElseIf (Company = "ECRS") And (Office = "(Platform Level)" Or Office = "CM" Or Office = "CM Grantsville") Then
Label = "ComRes"
Else
Label = "Remnants"
dbsheet.Range("H" & i).Value = Label
End If
Моя основная проблема заключается в том, что если название компании попадает в категорию «Климат» или «КомРес», оно не дает никакого ярлыка. Просто ноль. Но работает на «Остатки».
Что-то не так с частью if else? Спасибо!
Ниже весь мой код:
Sub Dummy2()
Dim dbsheet As Worksheet
Set dbsheet = ThisWorkbook.Sheets("xc_Global_Address_List")
Columns("H:H").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'Insert Label Column
Range("H1").Value = "Filter Column" 'Rename Header as "Filter Column"
Dim startrow As Long, lastrow As Long
startrow = 2
lastrow = dbsheet.Cells(Rows.Count, 1).End(xlUp).Row 'lastrow
Dim i As Long, Label As String
Dim Company As String
Dim Office As String
For i = startrow To lastrow
Company = dbsheet.Range("E" & i).Value
Office = dbsheet.Range("G" & i).Value
If InStr(Company, "Climate") Or (Company = "CT") Or (Company = "DSN") Or (Company = "WR") Then
Label = "Climate"
ElseIf (Company = "ECRS") And (Office = "(Platform Level)" Or Office = "CM" Or Office = "CM Grantsville") Then
Label = "ComRes"
Else
Label = "Remnants"
dbsheet.Range("H" & i).Value = Label
End If
Next i
End Sub


Если я немного скорректирую ваш отступ:
For i = startrow To lastrow
Company = dbsheet.Range("E" & i).Value
Office = dbsheet.Range("G" & i).Value
If InStr(Company, "Climate") Or (Company = "CT") Or (Company = "DSN") Or (Company = "WR") Then
Label = "Climate"
ElseIf (Company = "ECRS") And (Office = "(Platform Level)" Or Office = "CM" Or Office = "CM Grantsville") Then
Label = "ComRes"
Else
Label = "Remnants"
dbsheet.Range("H" & i).Value = Label
End If
Next i
Тогда вы должен сможете увидеть, что строка dbsheet.Range("H" & i).Value = Label - это внутри оператор If вместо за пределами это:
For i = startrow To lastrow
Company = dbsheet.Range("E" & i).Value
Office = dbsheet.Range("G" & i).Value
If InStr(Company, "Climate") Or (Company = "CT") Or (Company = "DSN") Or (Company = "WR") Then
Label = "Climate"
ElseIf (Company = "ECRS") And (Office = "(Platform Level)" Or Office = "CM" Or Office = "CM Grantsville") Then
Label = "ComRes"
Else
Label = "Remnants"
End If
dbsheet.Range("H" & i).Value = Label
Next i
Спасибо @Chronocidal. Оно работает! просто неуместная строка ... блин ... Я думал, что это даст те же результаты.