八、VBA 排序 ,Range Sort
对数据透视表、单元格区域或活动区域(如果指定区域仅包含一个单元格)进行排序。
expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)
expression 必需。该表达式返回“应用于”列表中的对象之一。如 Range("A2:B2000")
Key1 Variant 类型,可选。第一个排序字段,可为文本(数据透视表字段或区域名)或者为 Range对象 (例如,“Dept”或Cells(1, 1)
)。
Order1 XlSortOrder 类型,可选。在 Key1 中指定的字段或区域的排序顺序。
XlSortOrder 可为以下 XlSortOrder 常量之一。 |
xlDescending 对 Key1 按降序排序。 |
xlAscending 默认值。对 Key1 按升序排序。 |
Key2 Variant 类型,可选。第二个排序字段,可为文本(数据透视表字段或区域名)或者为 Range对象。如果省略本参数,则没有第二个排序字段。对数据透视表进行排序时,不能使用本参数。
Type Variant 类型,可选。指定要排序的元素。仅在对数据透视表排序时才使用本参数。
XlSortType 可为以下 XlSortType 常量之一。 |
xlSortLabels 按标签对数据透视表排序。 |
xlSortValues 按值对数据透视表排序。 |
Order2 XlSortOrder 类型,可选。在 Key2 中指定的字段或区域的排序顺序。对数据透视表进行排序时,不能使用本参数。
XlSortOrder 可为以下 XlSortOrder 常量之一。 |
xlDescending 对 Key2 按降序排序。 |
xlAscending 默认值。对 Key2 按升序排序。 |
Key3 Variant 类型,可选。第三个排序字段,为文本(区域名)或者为 Range对象。如果省略本参数,则没有第三个排序字段。对数据透视表进行排序时,不能使用本参数。
Order3 XlSortOrder 类型,可选。在 Key3 中指定的字段或区域的排序顺序。对数据透视表进行排序时,不能使用本参数。
XlSortOrder 可为以下 XlSortOrder 常量之一。 |
xlDescending 对 Key3 按降序排序。 |
xlAscending 默认值。对 Key3 按升序排序。 |
Header XlYesNoGuess 类型,可选。指定第一行是否包含标题。对数据透视表进行排序时,不能使用本参数。
XlYesNoGuess 可为以下 XlYesNoGuess 常量之一。 |
xlGuess 由 Microsoft Excel 确定是否有标题,如果有,确定标题位于何处。 |
xlContinuous 默认值。(应对整个区域进行排序)。 |
xlYes (不应对整个区域进行排序)。 |
OrderCustom Variant 类型,可选。本参数是从 1 开始的整数,指定了在自定义排序顺序列表中的索引号。如果省略 OrderCustom参数,则使用常规排序。
MatchCase Variant 类型,可选。如果为 True,则进行区分大小写的排序;如果为 False,则排序时不区分大小写。对数据透视表进行排序时,不能使用本参数。
Orientation XlSortOrientation 类型,可选。排序方向。
XlSortOrientation 可为以下 XlSortOrientation 常量之一。 |
xlSortRows 默认值。按行排序。 |
xlSortColumns 按列排序。 |
SortMethod XlSortMethod 类型,可选。排序类型。对于所选择或安装的不同语言支持(例如:美国英语),以上某些常量可能不可用。
XlSortMethod 可为以下 XlSortMethod 常量之一。 |
xlStroke 按每个字符的笔划数量排序。 |
xlPinYin 默认值。按字符的汉语拼音顺序排序。 |
DataOption1 XlSortDataOption 类型,可选。指定如何对 key 1 中的文本进行排序。对数据透视表进行排序时,不能使用本参数。
XlSortDataOption 可为以下 XlSortDataOption 常量之一。 |
xlSortTextAsNumbers 将文本作为数字型数据排序。 |
xlSortNormal 默认值。分别对数字和文本数据进行排序。 |
DataOption2 XlSortDataOption 类型,可选。指定如何对 key 2 中的文本进行排序。对数据透视表进行排序时,不能使用本参数。
XlSortDataOption 可为以下 XlSortDataOption 常量之一。 |
xlSortTextAsNumbers 将文本作为数字型数据排序。 |
xlSortNormal 默认值。分别对数字和文本数据进行排序。 |
DataOption3 XlSortDataOption 类型,可选。指定如何对 key 3 中的文本进行排序。对数据透视表进行排序时,不能使用本参数。
XlSortDataOption 可为以下 XlSortDataOption 常量之一。 |
xlSortTextAsNumbers 将文本作为数字型数据排序。 |
xlSortNormal 默认值。分别对数字和文本数据进行排序。 |
说明
对于特定的工作表,每次使用本方法时,将保存对 Header、Order1、Order2、Order3、OrderCustom 和 Orientation 的设置。如果在下次调用本方法时不指定这些参数的值,则会使用这些保存的值。如果不使用这些保存的值,在每次使用 Sort方法时请明确设置这些参数的值。
不能转换为数字型数据的文本字符串按常规排序。
注意 如果使用 Sort方法时没有定义参数,则 Microsoft Excel 会对所选定的要排序的区域按升序排序。
Excel VBA教程:Sort方法·示例
本示例对工作表 Sheet1 上的单元格区域 A1:C20 进行排序,用单元格 A1 作为第一排序关键字,用单元格 B1 作为第二排序关键字。排序是按行以升序进行的,没有标题。本示例假定单元格区域 A1:C20 有数据存在。
Sub SortRange1()
Worksheets("Sheet1").Range("A1:C20").Sort _ Key1:=Worksheets("Sheet1").Range("A1"), _ Key2:=Worksheets("Sheet1").Range("B1")
End Sub
本示例对工作表 Sheet1 上包含单元格 A1 的区域(活动区域)进行排序,按第一列中的数据进行排序,并且自动使用标题行(如果存在)。本示例假定活动区域(包含单元格 A1)中有数据存在。Sort方法将自动确定活动区域。
Sub SortRange2()
Worksheets("Sheet1").Range("A1").Sort _ Key1:=Worksheets("Sheet1").Columns("A"), _ Header:=xlGuess
End Sub
在 A2 到 B2000 的 范围内,对 B2到B2000,进行倒序
Sheets("Sheet3").Range("A2:B2000").Sort key1:=Range("B2:B2000"), Order1:=xlDescending
九、VBA 调用 excel 自带函数
WorksheetFunction.Sum(Range())
十、VBA 创建 excel 文件
VBA 选择 本地目录
VBA 删除文件,文件夹
1. 创建 excel 文件
Sub createExcel()
Dim gzb As Workbook
Set gzb = Workbooks.Add
'FileFormat:=xlExcel8 ,存成2003版本
'WriteResPassword Variant 类型,可选。 该字符串表示文件的写保护密码。如果文件保存时带有密码,但打开文件时不输入密码,则该文件以只读方式打开。
gzb.SaveAs "d:\mm.xls", FileFormat:=xlExcel8, WriteResPassword:="12345"
Set gzb = Nothing
End Sub
2. 选择本地目录
在excel 中创建一个按钮,指定这段vba即可
Sub getworkdir_for_salesWithoutVATburget()
'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
'fd.Filters = "Excel Files (*.xls), *.xls"
fd.Title = "请选择文件的存放目录"
Dim vrtSelectedItem As Variant
With fd
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
'vrtSelectedItem is a String that contains the path of each selected item.
'You can use any file I/O functions that you want to work with this path.
'This example simply displays the path in a message box.
Sheets("operation").Select
'指定本地目录的值,保存在那个cells中
Cells(4, 3).Value = fd.SelectedItems.Item(1)
'The user pressed Cancel.
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
End Sub
2. 删除文件, 文件夹
'循环删除所有文件
Sub test()
Dim FileName As String
FileName = Dir("D:\报表\*.xls*")
Do While FileName <> ""
Kill "D:\1\" & FileName
FileName = Dir
Loop
End Sub
'利用了系统的RD命令来直接删除文件夹。
Sub DeleteDir(DirPath As String)
'DirPath表示的是文件夹的完整路径
If Dir(DirPath, vbDirectory) <> "" Then
Shell "c:\windows\system32\cmd.exe /c rd ""c:\111""/s/q", vbHide
'利用系统的CMD来直接删除文件夹
'跳过了利用VBA进行文件夹目录的遍历,然后再RmDir删除文件的不便。
End If
End Sub
Sub DeleteFile(FilePath As String)
'FilePath表示的是文件的完整路径+文件名
If Dir(FilePath) <> "" Then Kill FilePath
'若文件存在,则删除该文件
End Sub
'单个删除
DeleteFile "E:\光盘\DNRJ\照片.JGP" '删除文件
DeleteDir "E:\光盘\我的文档" '删除文件夹