我对VBA和宏很新,并且正在寻找一些使用宏来排序数据的帮助。我记录了我做的事情,它产生了这个: Macro1宏
Range("A19:L28").Select
ActiveWorkbook.Worksheets("EuropeanStocks").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("EuropeanStocks").Sort.SortFields.Add Key:=Range( _
"h20:h28"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("EuropeanStocks").Sort
.SetRange Range("A19:L28")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我的问题是如何制作,以便排序范围由单元格中的数据定义。对于这个排序范围为h20:h28的例子,20和28部分是恒定的,我在工作表中有一个单元格
E.g A1,其中包含需要排序的列的字母,例如。 “我”,“j”等。
我如何才能将A1读入排序范围?
答案 0 :(得分:0)
最通用的方法是为要排序的范围(或包含要排序的范围的范围)定义命名范围,但是对于这个简单的要求,您可以简单地包装function Graph() {
this.vertices = [];
this.edges = [];
this.addVertex = function(v){
this.vertices.push(v);
};
return this;
}
在另一个Range
呼叫中呼叫包含排序范围(例如A1)的小区,从而获得所需范围。 E.g:
Range
编辑:这假定A1包含全范围参考(例如,它包含" A19:L28")。如果要部分地从其他单元构建目标范围,可以使用一种解决方案来构造范围引用,例如:
.SetRange Range(Range("A1"))
答案 1 :(得分:0)
请参阅下面的代码。您需要将Range(“A1”)中的值放入变量中,然后使用该变量在代码中设置范围。
Dim ws As Worksheet, c As String, rSort As Range, rData As Range
ws = Sheets("EuropeanStock")
With ws
c = .Range("A1").Value
Set rData = .Range("A19:L28")
Set rSort = .Range(c & "20:" & c & "28")
With rData.Sort
With .SortFields
.Clear
.Add Key:=rSort, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
End With
.SetRange rData
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
答案 2 :(得分:0)
只需将要排序的列放在A1中,然后用斜杠/
(即a/f/h/s
)
这将逐一对所有这些进行排序:
Dim NewRange As String, _
DataRange As String, _
Sp() As String
Sp = Split(Range("A1"), "/")
With ActiveWorkbook.Worksheets("EuropeanStocks")
For i = LBound(Sp) To UBound(Sp)
NewRange = Sp(i) & "19:" & Sp(i) & "28"
DataRange = Sp(i) & "20:" & Sp(i) & "28"
With .Sort
.SortFields.Clear
.SortFields.Add _
Key:=Range(DataRange), _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
.SetRange Range(NewRange)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next i
End With