2015-12-15 38 views
1

我怎麼知道工作表中最大行的索引?我如何輕鬆地循環使用不同的工作表?以下是我編寫的用於排序工作表併爲其分配排名的代碼。我希望把它遍歷工作表從「1981」,「1982年」改爲「1995」 年的,而每個工作表的大小是不同的。如何找到最大索引並更改不同的活動工作表?

Sub Macro3() 


Cells(1, 11) = "ep_rank" 
Cells(1, 12) = "bm_rank" 
Cells(1, 13) = "combine_rank" 

ActiveWorkbook.Worksheets("data1981").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("data1981").Sort.SortFields.Add Key:=Range(_ 
    "F2:F163"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("data1981").Sort 
    .SetRange Range("A1:J163") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
Dim i As Integer 
For i = 1 To 200 
    Cells(i + 1, 11) = i 
Next i 
End Sub 
+0

上面的每個工作表是否具有相同的列標題? 我的意思是從列A到J的標題,它們在你的所有工作表中都相同嗎? –

回答

0

你應該能夠循環通過一系列的數字,但使用它們作爲字符串,使他們將代表工作表.Name property並在Worksheets collection沒有工作表的數字索引。

Sub Macro3() 
    dim w as long 

    For w = 1982 To 1995 
     With Worksheets("Data" & w) 
      .Cells(1, 11).Resize(1, 3) = Array("ep_rank", "bm_rank", "combine_rank") 
      With .Cells(1, 1).CurrentRegion 
       With .Resize(.Rows.Count, 10) '<~~only up to column J 
        'sort on column F ascending 
        .Cells.Sort Key1:=.Columns(6), Order1:=xlAscending, _ 
           Orientation:=xlTopToBottom, Header:=xlYes 
       End With 
       With .Resize(.Rows.Count - 1, 1).Offset(1, 10) '<~~column K data 
        .Cells(1, 1) = 1 '<~~ K2 
        .DataSeries Rowcol:=xlColumns, Type:=xlLinear, Date:=xlDay, Step:=1 
       End With 
      End With 
     End With 
    Next w 

End Sub 
0

這將需要通過1982- 1995年,也最大行數的索引頁面循環的照顧。我已經使用這裏的Excel表格。因爲使用Excel表格並訪問它們更容易。

Sub Macro3() 

    Dim c as integer 

    Cells(1, 11) = "ep_rank" 
    Cells(1, 12) = "bm_rank" 
    Cells(1, 13) = "combine_rank" 

    For c =1981 to 1992 

    'Create an Excel table of the required range 

    Sheet1Worksheets("data" & c & "").ListObjects.Add(xlSrcRange, Range("A1:J1").End(xlDown), , xlYes).Name = "Table" & c & "" 

    ActiveWorkbook.Worksheets("data" & c & "").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("data" & c & "").Sort.SortFields.Add Key:= _ 
     Sheet1Worksheets("data" & c & "").listobjects("Table" & c & ""), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
     xlSortNormal 
    With ActiveWorkbook.Worksheets("data" & c & "").Sort 
     .SetRange Sheet1Worksheets("data" & c & "").ListObjects("Table" & c & "").databodyrange.select 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Dim i As Integer 
    For i = 1 To 200 
     Cells(i + 1, 11) = i 
    Next i 
    Next c 

     End Sub 
相關問題