2017-01-23 36 views
0

我有一張工作表'Sheet1'上有一個空白行的多個表。宏將多列中的數據排序,直到下一空白行,然後重複

我想讓VBA一個一個地排序。

考慮

  • 每個表都有不同數量的行
  • 在未來,列數量也將改變

什麼將永遠是相同的是:

  • 列B上的表格之間的空白行,這意味着將成爲excel識別的起點ere是一張新桌子。
  • 每個表總是會被C列進行排序

爲了給你一個更好的畫面,我在看消費數據交叉標籤,其中:

COLUMN A是問題類型

COLUMN B是答案選項

列C是頭是 「TOTAL」,它包含每答案選項%

COLUMS的其餘部分按照%C類似但具有不同的標題,如「男性」「女性」「用戶」「非用戶」「年齡18-25」「年齡26-34」....等等。

我想創建一個循環宏,它將按列C按升序對每個表(以及表內的所有列)進行排序,以確定它必須搜索下一個空格,並且該表將在下方。

我試着看循環,排序,並找到下一個空單元格。但由於某種原因,我無法將這些作品放在一起。

任何幫助將非常感謝!

ORIGINAL FILE

AFTER MACRO DESIRED OUTPUT

以前的代碼嘗試:


Dim oneArea as Range 

For Each oneArea in Range("C:C").SpecialCells(xlCellTypeConstants).Area 
    oneArea.EntireRow.Sort key1:=oneArea.Cells(1,1), order1:=xlAscending 
Next oneArea 

對於裁判:這一個是最接近的例子,宏我發現了什麼我去爲,但它不適用於我的情況/無法使其工作:

Macro to sort data until blank row(s), then repeat

+0

你能張貼一些樣本數據嗎? (複製/粘貼爲表格)還是最差,數據的屏幕截圖以及您的預期輸出?另外,你到目前爲止嘗試過什麼?請發佈您的任何代碼。 – BruceWayne

+0

當然,我無法附加excel,添加了一些截圖和代碼。 – Tamichan

+0

對於查找下一個表,您可以使用'Selection.End(xlDown).Select',當您找到新表的第一個單元格並選擇它時,可以使用它來選擇要排序的區域:'Selection.resize(Selection。 Rows.Count,Selection.Columns.Count - 1).Offset(0,1).Select' –

回答

0

下面的代碼是通過您的工作表中的每一行循環,檢查開始,每個表的結束,以及對它們進行排序。請享用。

Sub Mak1() 
Dim LastRow As Long, LastCol As Long 
Dim TabBeg As Long, TabEnd As Long 

    With Sheets("Sheet1") 
     LastRow = .Cells(.Rows.Count, 2).End(xlUp).row 
     LastCol = .Cells(3, .Columns.Count).End(xlToLeft).Column 
     TabBeg = 4 
     TabEnd = 4 
     For i = 4 To LastRow + 1 
      If .Cells(i, 2).Value = "" Then 
       With .Sort 
        .SortFields.Clear 
        .SortFields.Add Key:=Range(Cells(TabBeg, 3), Cells(TabEnd, 3)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
        .SetRange Range(Cells(TabBeg, 2), Cells(TabEnd, LastCol)) 
        .Header = xlNo 
        .MatchCase = False 
        .Orientation = xlTopToBottom 
        .SortMethod = xlPinYin 
        .Apply 
       End With 
       TabBeg = i + 1 
       TabEnd = i 
      Else 
       TabEnd = TabEnd + 1 
      End If 
     Next i 
    End With 

End Sub 
+0

WORKS GREAT!非常感謝! :) – Tamichan

+0

你可以在我的答案附近選中這個綠色標記作爲解決方案;) – Limak

相關問題