Если я понять условия правильно, то это должно получить результаты, которые вы хотите в первом случае ...
Показать все товары, кроме тех, которые начинаются с "РО":
Sub ShowAllButPO()
Dim ws As Worksheet
Dim pvtTable As PivotTable
Dim pvtField As PivotField
Dim pvtItem As PivotItem
Set ws = ActiveSheet
Set pvtTable = ws.PivotTables("PIVOT1")
Set pvtField = pvtTable.PivotFields("Invoicenr")
pvtTable.RefreshTable
pvtTable.ClearAllFilters
For Each pvtItem In pvtField.PivotItems
If Left(UCase(pvtItem), 2) = "PO" Then
pvtItem.Visible = False
End If
Next
End Sub
И это должно охватывать второе условие ...
Показать все товары в «invoicenr», которые начинаются с «ПО» и также содержат «ОН»:
Sub ShowOnlyPO()
Dim ws As Worksheet
Dim pvtTable As PivotTable
Dim pvtField As PivotField
Dim pvtItem As PivotItem
Set ws = ActiveSheet
Set pvtTable = ws.PivotTables("PIVOT1")
Set pvtField = pvtTable.PivotFields("Invoicenr")
pvtTable.RefreshTable
pvtTable.ClearAllFilters
For Each pvtItem In pvtField.PivotItems
If Left(UCase(pvtItem), 2) = "PO" And InStr(UCase(pvtItem), "OH") > 0 Then
pvtItem.Visible = True
Else
pvtItem.Visible = False
End If
Next
End Sub
Я менее уверен, что вы хотели для второго условия. Ваша формулировка «Я хочу видеть все остальное и invoicenr, который начинается с PO и содержит« OH », мне не совсем понятна.
Если вы хотите уточнить, что вы подразумеваете под "Все остальное и invoicenr, которое начинается с PO .. и т. Д. И т. Д.", Тогда я могу обновить код при необходимости.
Кроме того, если эти два блока кода получат то, что вы хотите, тогда вы можете просто назначить каждый макрос своей собственной кнопке на вашем листе. Таким образом, вы можете просто переключить два сценария, не открывая VBEditor для запуска кода. Если вы не знаете, как это сделать, проверить эту link