.Range("$A:$K").AutoFilter 4, d.Keys(j) 是什么啥意思?
时间: 2023-06-19 12:06:40 浏览: 48
这是VBA代码,它用于在Excel中自动筛选某一列的值。".Range("$A:$K")"表示要筛选的范围是从A列到K列,".AutoFilter 4"表示要对第4列进行筛选,"d.Keys(j)"表示筛选的条件是字典d中第j个键对应的值。因此,这段代码的作用是在Excel中筛选出第4列的值与字典d中第j个键对应的值相等的行。
相关问题
.Range("$A2:$K2").AutoFilter 4, d.Keys(j) 什么意思?
这段代码是 VBA 语言中用于对 Excel 表格进行筛选的命令。其中,".Range("$A2:$K2")" 表示筛选的数据范围为第 2 行的 A 列至 K 列,".AutoFilter 4" 表示按第 4 列进行筛选,"d.Keys(j)" 表示筛选的条件值为变量 d 中第 j 个键所对应的值。因此,这段代码的作用是筛选出第 4 列等于变量 d 中第 j 个键所对应的值的行。
"Sub 按关键字拆分工作表() Dim d As New Dictionary With Sheets("汇总表") arr = .[a2].CurrentRegion For i = 3 To UBound(arr) d(arr(i, 4)) = i Next For j = 0 To d.Count - 1 .Range("$A2:$N2").AutoFilter 4, d.Keys(j) Sheets.Add , Sheets(Sheets.Count) ActiveSheet.Name = d.Keys(j) .[a1].CurrentRegion.Copy ActiveSheet.[a1] Next j .Range("$A2:$N2").AutoFilter .Activate End With End Sub"请添加下面的代码"Private Sub Worksheet_Change(ByVal Target As Range) ActiveWorkbook.RefreshAll End Sub"怎么修改
您可以将新的代码添加到原有的代码之后,如下所示:
```
Sub 按关键字拆分工作表()
Dim d As New Dictionary
With Sheets("汇总表")
arr = .[a2].CurrentRegion
For i = 3 To UBound(arr)
d(arr(i, 4)) = i
Next
For j = 0 To d.Count - 1
.Range("$A2:$N2").AutoFilter 4, d.Keys(j)
Sheets.Add , Sheets(Sheets.Count)
ActiveSheet.Name = d.Keys(j)
.[a1].CurrentRegion.Copy ActiveSheet.[a1]
Next j
.Range("$A2:$N2").AutoFilter
.Activate
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.RefreshAll
End Sub
```
这样,当工作表发生变化时,就会自动刷新整个工作簿。