在这个macros中需要改变一个小东西

我有这个macros只是一个变化,除了我想要的。 我希望它按列“M”而不是“A”sorting。 我试过手动改变它,但我不断收到错误。 我知道这可能是一个简单的修复,但我似乎无法得到它。 提前致谢!

我试图改变“字段:= 1”到字段:=“13”,但我得到“运行时错误”1004“范围类失败的自动过滤方法”。

debugging,然后突出显示“rngFilter.AutoFilter字段:13,Criteria1:= cell.Value”

Private Sub CommandButton1_Click() Dim wbDest As Workbook Dim rngFilter As Range, rngUniques As Range Dim cell As Range Set rngFilter = Range("A1", Range("A" & Rows.Count).End(xlUp)) Application.ScreenUpdating = False With rngFilter .AdvancedFilter Action:=xlFilterInPlace, Unique:=True Set rngUniques = Range("A2", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) ActiveSheet.ShowAllData End With For Each cell In rngUniques Set wbDest = Workbooks.Add(xlWBATWorksheet) rngFilter.AutoFilter Field:=1, Criteria1:=cell.Value rngFilter.EntireRow.Copy With wbDest.Sheets(1).Range("A1") .PasteSpecial xlPasteColumnWidths .PasteSpecial xlPasteValuesAndNumberFormats End With Application.CutCopyMode = True wbDest.Sheets(1).Name = cell.Value wbDest.SaveAs ThisWorkbook.Path & Application.PathSeparator & _ cell.Value & " " & Format(Date, "mmm_dd_yyyy") Next cell rngFilter.Parent.AutoFilterMode = False Application.ScreenUpdating = True End Sub 

试试这个。 我已经更新了代码,以便您只需将sColumn从A更改为所需的任何列字母:

 Private Sub CommandButton1_Click() Const sColumn As String = "A" Dim wbDest As Workbook Dim rngFilter As Range, rngUniques As Range Dim cell As Range Set rngFilter = Range(sColumn & "1", Range(sColumn & Rows.Count).End(xlUp)) Application.ScreenUpdating = False With rngFilter .AdvancedFilter Action:=xlFilterInPlace, Unique:=True Set rngUniques = Range(sColumn & "2", Range(sColumn & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) On Error Resume Next ActiveSheet.ShowAllData On Error GoTo 0 End With For Each cell In rngUniques Set wbDest = Workbooks.Add(xlWBATWorksheet) rngFilter.AutoFilter Field:=1, Criteria1:=cell.Value rngFilter.EntireRow.Copy With wbDest.Sheets(1).Range("A1") .PasteSpecial xlPasteColumnWidths .PasteSpecial xlPasteValuesAndNumberFormats End With Application.CutCopyMode = True wbDest.Sheets(1).Name = cell.Value Application.DisplayAlerts = False wbDest.SaveAs ThisWorkbook.Path & Application.PathSeparator & cell.Value & " " & Format(Date, "mmm_dd_yyyy") wbDest.Close False Application.DisplayAlerts = True Next cell rngFilter.Parent.AutoFilterMode = False Application.ScreenUpdating = True End Sub 

尝试用你的debugging错误代替这个:

 ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=13, Criteria1:=cell.Value 

基本上,您的rngFiltervariables似乎将您的范围限制在A列,而您尝试基于超出此范围的列进行过滤。 让我知道,如果它的作品!