Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将VBA代码更改为按B列排序,而不是按现在的操作_Excel_Vba_Sorting - Fatal编程技术网

Excel 将VBA代码更改为按B列排序,而不是按现在的操作

Excel 将VBA代码更改为按B列排序,而不是按现在的操作,excel,vba,sorting,Excel,Vba,Sorting,我在这些论坛上找到了这段代码。我一直在试图操纵代码来完成我需要做的事情,但我正在努力完成一件事。特别是,我希望参数为: 排序方式:B列 排序:单元格值 顺序:从大到小 我正在努力解决的问题是如何让它按B列排序。我认为目前它是按D列排序的;这是我正在使用的excel文件中的最后一列。但是,我需要它按B列排序,但我不知道如何更改它。有人知道如何操作下面的代码来始终按B列排序吗 Sub RangeSelectionPrompt() Dim rngStart As Range Di

我在这些论坛上找到了这段代码。我一直在试图操纵代码来完成我需要做的事情,但我正在努力完成一件事。特别是,我希望参数为:

  • 排序方式:B列
  • 排序:单元格值
  • 顺序:从大到小
我正在努力解决的问题是如何让它按B列排序。我认为目前它是按D列排序的;这是我正在使用的excel文件中的最后一列。但是,我需要它按B列排序,但我不知道如何更改它。有人知道如何操作下面的代码来始终按B列排序吗

Sub RangeSelectionPrompt()

    Dim rngStart As Range
    Dim WS As Worksheet

    On Error Resume Next
    Set rngStart = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
    Err.Clear
    On Error GoTo 0

    If rngStart Is Nothing Then
        MsgBox "User cancelled"
    Else
        Set WS = rngStart.Parent
        WS.Sort.SortFields.Clear

        With rngStart
            WS.Sort.SortFields.Add Key:= _
                .Columns(.Columns.Count), SortOn:=xlSortOnValues, Order:= _
                xlDescending, DataOption:=xlSortNormal
        End With

        With WS.Sort
            .SetRange rngStart
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End If
End Sub

rngStart.WS.Sort.SortFields
元素的关键元素定义了如何对数据进行排序。 使用命令
WS.Sort.SortFields.Add
,可以向Sort函数添加排序键。您可以向其中添加多个键(首先对列A进行排序,然后对列B进行排序)

假设要排序的范围从A列开始,并希望按B列排序,则可能需要使用@BigBen solution,并将键设置为
。Columns(2)

此键的下一个参数将让您决定排序的方式:
SortOn:=xlSortOnValues,Order:=xlDescending,
。您必须了解,排序将基于值。然后下降。所以这应该是你想要的方式


你可以在这里找到更多关于sortfield方法的信息:

.Columns(.Columns.Count)
更改为
WS.Columns(2)
?我爱你,大本。你让我开心。我不知道该怎么办,但你给了我一个教训。