excel - 如何使这不重复?
问题描述
下面的代码在数据透视表过滤器的项目中搜索特定名称,如果找到则按该名称过滤。然后将 column1 更改为该名称,并调用另一个方法。它对 6 个始终相同的名称执行此操作。如何限制重复性?应该这样做吗?
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "BUN" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "BUN"
Column1 = "AA"
Call Brand(Range1, Column1)
Exit For
End If
Next
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "CAX" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "CAX"
Column1 = "AQ"
Call Brand(Range1, Column1)
Exit For
End If
Next
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "CNF" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "CNF"
Column1 = "BG"
Call Brand(Range1, Column1)
Exit For
End If
Next
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "CVN" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "CVN"
Column1 = "BW"
Call Brand(Range1, Column1)
Exit For
End If
Next
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "GMN" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "GMN"
Column1 = "DS"
Call Brand(Range1, Column1)
Exit For
End If
Next
For Each pvtitem In ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").PivotItems
If pvtitem.Name = "XCD" Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code").CurrentPage _
= "XCD"
Column1 = "EY"
Call Brand(Range1, Column1)
Exit For
End If
Next
解决方案
这是使用的完美示例Select Case
:
Sub tgr()
Dim pvtitem As PivotItem
Dim Range1 As Range
Dim Column1 As String
'Set Range1 = <your range>
'If necessary, you can set this as part of the select case along with Column1
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Client Code")
For Each pvtitem In .PivotItems
Column1 = vbNullString
Select Case UCase(pvtitem.Name)
Case "BUN": Column1 = "AA"
Case "CAX": Column1 = "AQ"
Case "CNF": Column1 = "BG"
Case "CVN": Column1 = "BW"
Case "GMN": Column1 = "DS"
Case "XCD": Column1 = "EY"
End Select
If Len(Column1) > 0 Then
.CurrentPage = pvtitem.Name
Call Brand(Range1, Column1)
End If
Next pvtitem
End With
End Sub
推荐阅读
- bash - 如何自动化 OPENVPN 登录
- flutter - 如何在颤动中获得底部控制栏的高度?
- azure - Docker:如何在 asp.net 核心应用程序中读取 configmap 和 secret?
- python - 我的 python 类属性出现名称错误
- java - 如何在登录主页后重定向用户并使用 Spring Security 抛出 200 而不是 302?
- python - 将 str 列表映射到 int 列表
- python - 我可以将文件位置缩短为 .py 文件位置吗
- c# - 在标签上显示所选 ListBoxItem 的值
- javascript - 如何从 mysql 返回 JSON 对象?
- react-native - React Native 的 createStackNavigator()