Excel宏动态范围

时间:2018-03-09 21:23:42

标签: excel vba excel-vba

当录制宏时,我的数据是4162,为什么我有Range(“A1:A4162”),每次我有超过4162的数据时,它将无法工作。我需要代码来选择我在表单中提供的任何数据范围

  Range("A1").Select
        Selection.AutoFilter
        ActiveWorkbook.Worksheets("Incident Ticket").AutoFilter.Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Incident Ticket").AutoFilter.Sort.SortFields.Add _
            Key:=Range("A1:A4162"), SortOn:=xlSortOnValues, Order:=xlAscending, _
            DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Incident Ticket").AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

3 个答案:

答案 0 :(得分:1)

我添加了要包含在代码中的函数class CreateView(generics.ListCreateAPIView): def perform_create(self, serializer): loop = asyncio.get_event_loop() loop.run_until_complete(get_rest_response([url1, url2])) 。这将自动为您找到最后一行。另外,请稍微清理一下代码。

lastRow

答案 1 :(得分:1)

您可以在代码中指定“UsedRange” - 无论数据范围有多大,都会调整。以下代码假定您在活动工作表上运行宏:

ActiveSheet.UsedRange.Sort _
key1:=ActiveSheet.Range("A1"), order1:=xlAscending, Header:=xlYes

答案 2 :(得分:0)

如果您只对一列感兴趣,请尝试以下操作:

numRows = Sheets("Incident Ticket").Range("A1").End(xlDown).Row

如果您对给定工作表中使用的最高行数感兴趣,请使用以下

numRows = Sheets("Incident Ticket").UsedRange.Rows.Count

Sheets("Incident Ticket").AutoFilter.Sort.SortFields.Add _
   Key:=Range("A1:A" & numRows), SortOn:=xlSortOnValues, _
   Order:=xlAscending, DataOption:=xlSortNormal