繁体   English   中英

VBA Excel 将数据从 A 到 Z 排序在一列中,所有数据表更改

[英]VBA Excel sort the data from A to Z in one column with all data table changes

这可能是一个重复的问题:

一列上的VBA排序AZ

但是,我想澄清这些内容。

我尝试将此代码用于我的目的:

Sub SortAsc2()

    Dim LastRow As Long
    LastRow = Cells(Rows.Count, "M").End(xlUp).Row

    'Columns("D:D").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("D"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("D2:D" & LastRow)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

我遇到错误的地方:

1004 object_Global 的方法“范围”失败

然后我尝试了另一个代码

Sub SortDataWithoutHeader()
    Range("D1:D12").Sort Key1:=Range("D1"), Order1:=xlAscending, Header:=xlNo
End Sub

但是排序只发生在列内,而其他数据不受影响。 我想要来自与数据排序相对应的其他单元格的值。

在此处输入图片说明

有人可以帮忙吗?

试试这个。

阅读代码的注释并根据您的需要进行调整

代码:

Public Sub SortAsc2()

    Dim targetSheet As Worksheet
    Dim targetRange As Range

    Dim lastRow As Long

    ' Set a reference to the sheet
    Set targetSheet = ThisWorkbook.Worksheets("Sheet1")

    ' Find the last non empty row (based on column A)
    lastRow = targetSheet.Cells(targetSheet.Rows.Count, "A").End(xlUp).Row

    ' Set the range to be sorted (A2= begins in row 2 and ends in column K?)
    Set targetRange = targetSheet.Range("A2:K" & lastRow)

    ' Clear current sorting fields
    targetSheet.Sort.SortFields.Clear

    ' You are missing a 1 after "D" in Range in your code
    targetSheet.Sort.SortFields.Add Key:=Range("D1"), _
                                         SortOn:=xlSortOnValues, _
                                         Order:=xlAscending, _
                                         DataOption:=xlSortNormal

    With targetSheet.Sort
        .SetRange targetRange
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

让我知道它是否有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM