【发布时间】:2015-06-15 07:23:57
【问题描述】:
我正在尝试使用 VBA 在 excel 中对这三列(Sort By Col-2)进行排序。 左上角(行号和列号,例如 1,1)和右下角的单元格(行号和列号,例如 9,3)是已知的。 每个单元格都包含 String 类型的值。
输入:
Col-1 Col-2 Col-3
P1 I1 XYZ 1 | XYZ 2 | XYZ 3
P8 I4 XYZ 26 | XYZ 27 | XYZ 28 | XYZ 29
P3 I2 XYZ 10 | XYZ 11 | XYZ 12
P6 I5 XYZ 19 | XYZ 20 | XYZ 21
P5 I2 XYZ 16 | XYZ17 | XYZ 18
P9 I1 XYZ 4 | XYZ 5 | XYZ 6
P7 I3 XYZ 22 | XYZ 23 | XYZ 24 | XYZ 25
P4 I2 XYZ 13 | XYZ14 | XYZ 15
P2 I2 XYZ 7 | XYZ 8 | XYZ 9
输出:
Col-1 Col-2 Col-3
P1 I1 XYZ 1 | XYZ 2 | XYZ 3
P9 I1 XYZ 4 | XYZ 5 | XYZ 6
P3 I2 XYZ 10 | XYZ 11 | XYZ 12
P5 I2 XYZ 16 | XYZ17 | XYZ 18
P4 I2 XYZ 13 | XYZ14 | XYZ 15
P2 I2 XYZ 7 | XYZ 8 | XYZ 9
P7 I3 XYZ 22 | XYZ 23 | XYZ 24 | XYZ 25
P8 I4 XYZ 26 | XYZ 27 | XYZ 28 | XYZ 29
P6 I5 XYZ 19 | XYZ 20 | XYZ 21
宏录制给了我以下代码:
Sub SortingRecord()
'
' SortingRecord Macro
'
'
ActiveWorkbook.Worksheets("Sheet6").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet6").Sort.SortFields.Add Key:=Range("B1:B9"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet6").Sort
.SetRange Range("A1:C9")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
问题是我是 VBA 新手,无法理解此代码中使用的许多术语的含义。那么如何确定哪些语句对于编程解决方案是真正必要的。
我正在做的代码不需要工作表编号,因为我在特定工作表上运行宏,那么如何使用排序方法?
请尝试帮助我解决这个问题。我不想通过选择单元格来获取范围,所以也想使用问题中给出的单元格编号来使程序动态化(因为行数和列数可能会发生变化)。
【问题讨论】:
-
也许这可以帮助您入门:msdn.microsoft.com/en-us/library/office/…