Board logo

標題: [已解決]排序後在不同區塊圖上顏色 [打印本頁]

作者: jiuhtsair    時間: 2011-11-21 20:57     標題: [已解決]排序後在不同區塊圖上顏色

本帖最後由 jiuhtsair 於 2011-11-22 19:43 編輯

各位大大好:[attach]8592[/attach]
     小弟有一困擾,我想將c4:d22的數據以D欄為主由大而小排序..再用D4到D22的數字與D2比較,若是比D2大超過150的儲存格用一種顏色,比D4大超過80~100間的儲存格用另一種顏色,比D4大超過30~60間的儲存格用另一種顏色,請問該如何處理?

     前面排序的部份..小弟利用錄製巨集的方式已經完成。後面比較大小圖顏色的部份..小弟試著寫了程式,但錯誤很多..不知從何改起,懇請賜教!

     小弟的想法是這樣...

     Dim i as integer
     For i =4 to 22
     If sheet(1).cells(4,2).Value<=sheet(1).cells(4,i).Value-150 Then cell(4,i).select ..塗顏色
     elseif.....

     next i
   
     可是VBA告訴我說程式錯誤..從If sheet(1).cells(4,2).Value<=sheet(1).cells(4,i).Value-150 Then cell(4,i).select一路都是紅色錯誤..

     想請教大家要如何解才好?謝謝!
作者: Hsieh    時間: 2011-11-21 22:09

回復 1# jiuhtsair

[attach]8594[/attach]
作者: oobird    時間: 2011-11-21 22:12

比D2大超過150...
比D4大超過80~100間的儲存格…
比D4大超過30~60間的儲存格…
看得很糊塗。跟D2,D4比嗎?
中間的呢?100~150間的,60~80間的,還有小於30的
作者: jiuhtsair    時間: 2011-11-21 23:09

回復 2# Hsieh

ㄏㄏ...感謝大大!真是好方法。
另外,想請教大大...使用格式化條件可以有三組條件..如果今天需要三組以上條件時..要如何處理呢?

感謝您的解惑!感恩!
作者: jiuhtsair    時間: 2011-11-21 23:14

回復 3# oobird

oobird大大:
   
        抱歉!有些辭不達意!
   
        小弟是想用D4到D22的內容與D2相比較,然後分別在不同的區間中用不同顏色表示,區間與區間不連續,不在區間內的儲存格則保持原本顏色(白色)。
   
        感謝您!謝謝!
作者: Hsieh    時間: 2011-11-22 15:23

回復 4# jiuhtsair
  1. Sub Macro4()
  2. '
  3. ' Macro4 Macro
  4. ' 專用板  數據排序
  5. ''
  6.     Range("C4:D22").Sort Key1:=Range("D22"), Order1:=xlDescending, Header:=xlNo, _
  7.         OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
  8.         :=xlStroke, DataOption1:=xlSortNormal

  9. For Each a In [C4:C22]
  10.    k = a.Offset(, 1) - [D2]
  11.    Select Case k
  12.    Case Is >= 150
  13.    n = 3
  14.    Case 80 To 100
  15.    n = 6
  16.    Case 30 To 60
  17.    n = 32
  18.    Case Else
  19.    n = 0
  20.    End Select
  21.    a.Resize(, 2).Interior.ColorIndex = n
  22. Next
  23. End Sub
複製代碼

作者: oobird    時間: 2011-11-22 15:27

  1. Sub Macro4()
  2.     Range("C4:D22").Sort Key1:=Range("D4"), Order1:=xlDescending
  3. For Each c In Range("d4:D22")
  4. c.Interior.ColorIndex = Application.VLookup(c - [d2], [{-10000,0;30,5;61,0;80,6;101,0;150,7}], 2)
  5. Next
  6. End Sub
複製代碼

作者: jiuhtsair    時間: 2011-11-22 19:40

回復 6# Hsieh

感謝Hsieh大大,這正是小弟想要的方式,由於只是初學者,想破頭也想不出來。
感謝您的協助!謝謝。
作者: jiuhtsair    時間: 2011-11-22 19:42

本帖最後由 jiuhtsair 於 2011-11-22 19:44 編輯

回復 7# oobird

感謝oobird大大,這程式碼真的太棒了!精簡又有效率。值得小弟這初學者多加琢磨、學習!感謝!
謝謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)