排序功能不起作用

时间:2017-05-22 08:06:27

标签: excel excel-vba vba

我的动态范围rng2来自A4:F?。我尝试调整此站点的代码,但在尝试对其进行排序时不断出现错误。 Officers是一个字符串"E1:E" & last rowTgroup是字符串"D1:D" & last row

rng2.Sort key1:=Range(officers), Order1:=xlAscending, _
key2:=Range(tgroup), order2:=x1Ascending, Header:=x1No

来自评论:

i是早期使用的计数器&在最后一行下面一行。

Dim officers As String, tgroup As String, sArea As String, rng2 As Range
officers = "E1:E" & (i - 4)
tgroup = "D1:D" & (i - 4)
sArea = "A4:F" & (i - 1)
Set rng2 = rng.Range(sArea)
rng2.Sort key1:=Range(officers), Order1:=xlAscending, _ 
          key2:=Range(tgroup), order2:=xlAscending, Header:=xlNo

rngA1:F?的范围,但合并了单元格,这就是我rng2的原因。

2 个答案:

答案 0 :(得分:0)

假设要排序的数据(没有标题)从ActiveSheet的第4行开始,请将officerstgroup的定义更改为:

officers = "E4:E" & (i - 1)
tgroup = "D4:D" & (i - 1)
sArea = "A4:F" & (i - 1)
'and probably best to set the sort area based on the sheet itself
'to be consistent with how you have defined the keys
Set rng2 = Range(sArea)

答案 1 :(得分:0)

排序无法正常工作的原因并不像@ YowE3k建议的那样。答案是我没有准确定义该类型的范围部分。解决方案是:

    rng2.Sort key1:=rng2.Range(officers), Order1:=xlAscending, _
        key2:=rng2.Range(tgroup), order2:=xlAscending, Header:=xlNo

我没有使用rng2.Range所以它得到了错误的区域&无法分类。

相关问题