極星 發問時間: 電腦與網際網路軟體 · 6 年前

execl 儲存格顏色排序

我有一推數字其中有""記號視為黃色填滿儲存格,需要整列排序在右側

因為有很多無法用格式化條件一列一列來排序需要用程式來排序...

還請各位高手幫幫忙....謝謝.....^_^

A B C D E F G H

1 10 "0" 0 10 "3" 8 1

2 "9" 0 1 9 "2" 7 0

3 8 13 "0" 8 1 "6" 2

4 個解答

評分
  • 6 年前
    最佳解答

    Sub 重排序()

    Dim xR As Range

    For Each xR In ActiveSheet.UsedRange

     If xR.Interior.ColorIndex <> xlNone Then

      xR.Cut Cells(xR.Row, Columns.Count).End(xlToLeft)(1, 2)

     End If

    Next

    ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft

    End Sub

    2015-03-12 16:28:01 補充:

    測試檔,玩看看:

    http://www.funp.net/620422

    2015-03-13 21:46:19 補充:

    EXCEL VBA.將〔黃底色〕儲存格向右方排列

                             <.准提部林.>

    ---------------------------------

    ■程式碼:

    Sub 排序及計算()

    Dim xR As Range, xA As Range, Arr&(), N&

    Application.ScreenUpdating = False

    With ActiveSheet.UsedRange '取得使用範圍

      Set xR = .Item(.Columns.Count) '取得範圍右上角(最後欄的第一格)

      '↓若文字為藍色,表示為之前的統計欄,必須先清除

      If xR.Font.Color = vbBlue Then Columns(xR.Column).Clear

    End With

     

    With ActiveSheet.UsedRange '重新取得使用範圍

      '↓範圍右一空白欄填入文字(做擋牆,防止黃色格貼回資料範圍內)

      .Columns(.Columns.Count + 1) = "A"

       

      ReDim Arr(1 To .Rows.Count, 0) '設一個陣列(統計黃色格存放用)

      For Each xR In .Cells

        If xR.Interior.Color = vbYellow Then

         xR.Cut Cells(xR.Row, Columns.Count).End(xlToLeft)(1, 2) '剪下黃色格往右貼

         Arr(xR.Row, 0) = Arr(xR.Row, 0) + 1 '黃色格個數累計

         N = N + 1

        End If

      Next

      .Columns(.Columns.Count + 1).Clear

    End With

     

    If N = 0 Then Exit Sub

    '刪除範圍中空白格(編輯.到.特殊.空格)

    ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft

     

    Set xA = ActiveSheet.UsedRange '重新取得使用範圍

    With xA.Columns(xA.Columns.Count + 1) '範圍右一空白欄

      .Value = Arr '填入統計數

      .Font.Color = vbBlue '設文字為藍色(與資料做區隔)

      .Font.Bold = True '設文字為粗體

    End With

    End Sub

    ----------------------------

    <範例檔>下載:

    檔案名稱:20150312a01(儲存格變色及排序)

    下載連結:http://www.funp.net/946777

    ---------------------------------

    2015-03-13 21:47:35 補充:

    已在範例檔中加入註解,並小修程式,

    請重新下載!

  • 6 年前

    回Lopez...沒錯:

    第一列排序後會變成:

    10 0 10 8 1 "0" "3"

    不知有什麼好辦法?....謝謝

    2015-03-12 14:21:14 補充:

    准提部林兄的方法果然不錯....不愧為大師....^_^

    我還有一個問題是否可以請准提部林兄幫我解答....

    就是有沒有程式幫我計算在另一個欄位顯示"黃色填滿儲存格"的總數呢?

    不好意思剛剛才想到....還請准提部林兄幫我解答....^_^...謝謝。

    2015-03-13 17:34:19 補充:

    准提部林兄的方法果然可行...謝謝你...^_^

    准提部林兄的程式寫得非常好

    方便的話可否在旁邊加中文註解

    也讓我也能了解程式中的意思...哈...哈

    沒空也沒關係....謝謝了....^_^

  • Lopez
    Lv 7
    6 年前

    請問:

    "整列排序在右側"

    的定義是?

    是否第一列排序後會變成:

    10 0 10 8 1 "0" "3"

    是這樣嗎?

還有問題?馬上發問,尋求解答。