Vba 如何使excel排序与变量一起工作?
我正在尝试使用以下代码进行排序:Vba 如何使excel排序与变量一起工作?,vba,excel,sorting,Vba,Excel,Sorting,我正在尝试使用以下代码进行排序: Range(BRPdest).Activate ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _ Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending,
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(ActiveCell.Column & ":12", ActiveCell.Column & ":125")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我录制了一个宏,得到了这个,但它有静态范围
我需要它来找到第一行应该做的相关列
它应该将列从单元格12排序到125(或更少),单元格中的数据格式为“A12345”
当代码到达.apply行时,它抛出错误1004,我认为我的密钥可能有问题:(我还尝试将密钥设置为与具有相同错误的范围相同的值)
有人能指出我做错了什么吗
提前感谢。Column属性返回列的数字索引,而不是范围引用中使用的字母。您可以使用(sheet).Cells(行、列)通过数字行和列引用来引用单个单元格范围
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(Cells(12,ActiveCell.Column), Cells(125,ActiveCell.Column))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
如果要排序的数据大小可能不同,则可能需要查找数据集中最后一行的内容,而不是依赖固定的行号。得益于Wedget和a.S.H的组合 我已经解决了
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我必须将范围更改为楔形块建议的格式,并在键中使用该格式
非常感谢BRPdest=“$p$27”在相关情况下,您不能以列
D
为标准对列p
进行排序。条件范围必须在已排序的范围内。我进行了更改(在该范围后有一个额外的“'),但仍然得到相同的错误