Excel VBA匹配函数忽略更新的排序

Excel VBA匹配函数忽略更新的排序,vba,excel,sorting,Vba,Excel,Sorting,好的,我有一个项目列表,通常是按稀有性排序的,但是对于一个特定的操作,我需要对它进行排序,以便匹配函数对其进行处理,所以我将它设置为对匹配函数进行排序,然后再使用它。然而,match函数正在提取排序之前它所在的行。有人知道如何解决这个问题吗?下面的代码(包括庞大的排序代码): 我不熟悉匹配函数。所以我没法让那部分工作。我被原始sub中的所有“select”代码弄糊涂了。所以我只是将范围复制到一个数组中,对范围进行排序,绕过Match命令,因为我不知道您使用的值,然后将原始数字复制回范围 我希望这

好的,我有一个项目列表,通常是按稀有性排序的,但是对于一个特定的操作,我需要对它进行排序,以便匹配函数对其进行处理,所以我将它设置为对匹配函数进行排序,然后再使用它。然而,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