首页 > 解决方案 > 在工作表的随机部分对命名范围进行排序 - 我们找不到范围引用或定义的名称

问题描述

我从未尝试对不在工作表顶部的数据进行排序,但我有一些格式奇怪的数据,并且无法让“排序”正常工作。我继续收到错误we couldn't find a range reference or a defined name

数据如下图所示,我试图从第 18 行开始按标题“方法”然后“数字”对数据进行排序。这张图片中的数据实际上已经按照我想要的方式进行了排序。我已经使用测试SELECT并且我的命名范围可以正确选择数据,但是我的排序语句失败并出现上述错误。有什么建议么?

代码:

Sub Test()

Dim fRowoffilterqcdata As Integer, lRowoffilterqcdata As Integer, lColoffilterqcdata As Integer
fRowoffilterqcdata = Cells(1, 8).End(xlDown).Row
lRowoffilterqcdata = Get_lRow(ActiveSheet)
lColoffilterqcdata = Cells(fRowoffilterqcdata, Columns.Count).End(xlToLeft).Column
Dim FilteredQCDataRng As Range
Set FilteredQCDataRng = Range(Cells(fRowoffilterqcdata, 1), Cells(lRowoffilterqcdata, lColoffilterqcdata))
FilteredQCDataRng.Select ' This Works
FilteredQCDataRng.Sort key1:="Method", key2:="Number", Order1:=xlDescending, Header:=xlYes ' This Failed

'Call FilterWorksheetHeaderRow(ActiveSheet, fRowoffilterqcdata)

End Sub

在此处输入图像描述

标签: excelvbasortingrange

解决方案


使用Columns("A:T")格式时,我可以将“列标题”用作文本,但是当使用命名范围时,我也必须使用“范围”作为键。

例如:

这有效:

Columns("A:T").Sort key1:="Method", key2:="Number", Order1:=xlDescending, Header:=xlYes 

但这不会:

FilteredQCDataRng.Sort key1:="Method", key2:="Number", Order1:=xlDescending, Header:=xlYes 

这是作品:

FilteredQCDataRng.Sort key1:=Range("B32"), key2:=Range("F32"), Order1:=xlDescending, Header:=xlYes

推荐阅读