Excel VBA匹配函数忽略更新的排序
好的,我有一个项目列表,通常是按稀有性排序的,但是对于一个特定的操作,我需要对它进行排序,以便匹配函数对其进行处理,所以我将它设置为对匹配函数进行排序,然后再使用它。然而,match函数正在提取排序之前它所在的行。有人知道如何解决这个问题吗?下面的代码(包括庞大的排序代码):Excel VBA匹配函数忽略更新的排序,vba,excel,sorting,Vba,Excel,Sorting,好的,我有一个项目列表,通常是按稀有性排序的,但是对于一个特定的操作,我需要对它进行排序,以便匹配函数对其进行处理,所以我将它设置为对匹配函数进行排序,然后再使用它。然而,match函数正在提取排序之前它所在的行。有人知道如何解决这个问题吗?下面的代码(包括庞大的排序代码): 我不熟悉匹配函数。所以我没法让那部分工作。我被原始sub中的所有“select”代码弄糊涂了。所以我只是将范围复制到一个数组中,对范围进行排序,绕过Match命令,因为我不知道您使用的值,然后将原始数字复制回范围 我希望这
我不熟悉匹配函数。所以我没法让那部分工作。我被原始sub中的所有“select”代码弄糊涂了。所以我只是将范围复制到一个数组中,对范围进行排序,绕过Match命令,因为我不知道您使用的值,然后将原始数字复制回范围 我希望这有帮助
Sub tester()
Dim Arr() As Variant, x As Integer, arr2Rng As Range
ActiveWorkbook.Worksheets("Item List").Activate
Arr = Range("L1:U300")
ActiveWorkbook.Worksheets("Item List").Range("L1:U300").Select
ActiveWorkbook.Worksheets("Item List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Item List").Sort.SortFields.Add Key:=Range( _
"L2:L300"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Item List").Sort
.SetRange Range("L1:U300")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
x = Application.WorksheetFunction.Match(BuyItem.Value, Range("TraderItems"))
MsgBox (x)
Range("L1").Select
Set arr2Rng = Range("L1")
arr2Rng.Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr
End Sub
用实际范围替换
TraderItems
。什么是范围(“TraderItems”)
?你们有一个命名范围“TraderItems”吗?在何处设置?此外,如果您已停止计算,请尝试在排序后将强制计算范围放入其中…range(“TraderItems”)
是图纸(“项目列表”)的定义范围。range(L2,L300)
。(它超出了必要的范围)好吧,我会尝试用实际范围的东西来替换名称好吧,那没有帮助,用表(“项目列表”)替换范围(“TraderItems”)
。范围(“L2”,“L300”)
得到了相同的东西,给了我以前所在的行
Sub tester()
Dim Arr() As Variant, x As Integer, arr2Rng As Range
ActiveWorkbook.Worksheets("Item List").Activate
Arr = Range("L1:U300")
ActiveWorkbook.Worksheets("Item List").Range("L1:U300").Select
ActiveWorkbook.Worksheets("Item List").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Item List").Sort.SortFields.Add Key:=Range( _
"L2:L300"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Item List").Sort
.SetRange Range("L1:U300")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
x = Application.WorksheetFunction.Match(BuyItem.Value, Range("TraderItems"))
MsgBox (x)
Range("L1").Select
Set arr2Rng = Range("L1")
arr2Rng.Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr
End Sub