使用vba将表中第一行删除,并且将W列为”免检“的所有行删除。之后,建立数据透视表,以"分公司名称"为行,以"保单状态"为列,以"投保单号为值"
时间: 2023-07-19 10:42:52 浏览: 207
VBA 按照某一列进行筛选拆分数据,拆分成多个表或多个Sheet,按某列检查重复生成新的Sheet,删除除本表外的所有表
5星 · 资源好评率100%
您可以使用以下代码来删除第一行并删除W列为”免检“的所有行,然后建立数据透视表。假设您的数据在Sheet1中:
```
Sub CreatePivotTable()
Dim LastRow As Long
Dim PTCache As PivotCache
Dim PT As PivotTable
Dim PTWorksheet As Worksheet
With Sheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row '找到最后一行
.Rows(1).Delete '删除第一行
LastRow = LastRow - 1 '由于删除了第一行,所以最后一行需要减1
.Range("A1:W" & LastRow).AutoFilter Field:=23, Criteria1:="免检" '筛选W列为”免检“的所有行
Set PTCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=.Range("A1:W" & LastRow))
Set PTWorksheet = ActiveWorkbook.Worksheets.Add
Set PT = PTWorksheet.PivotTables.Add( _
PivotCache:=PTCache, _
TableDestination:=PTWorksheet.Range("A1"), _
TableName:="PivotTable1")
With PT
.PivotFields("分公司名称").Orientation = xlRowField
.PivotFields("保单状态").Orientation = xlColumnField
.AddDataField .PivotFields("投保单号"), "值", xlSum
End With
.AutoFilterMode = False '关闭筛选
End With
End Sub
```
在这个例子中,我们首先使用`.Rows(1).Delete`删除了第一行,然后使用AutoFilter方法筛选出W列为”免检“的所有行。接下来,我们使用PivotCaches.Create方法创建了一个数据透视表缓存对象,然后使用PivotTables.Add方法在新建的工作表上创建了一个数据透视表对象。最后,我们使用PivotFields方法将“分公司名称”作为行、将“保单状态”作为列、将“投保单号”作为值添加到了数据透视表中。请注意,代码中的23是W列的列号。您可以根据您的实际情况更改这个数字。
阅读全文