2015-11-30 88 views
2

我有一個叫做訂單#的Excel列,它具有重複值的訂單號,因爲每個訂單都有一個或多個項目,所以如果訂單有3個項目,訂單#會重複三次,等等。顏色excel列基於重複cloumn值的顏色

我想用兩種顏色來區分不同的命令,所以如果第一個命令#是「1」就是紅色,第二個「2」會是黃色,第三個「3」會再次變爲紅色,第四個「4」將是黃色的,依此類推。

+----------+--------+ 
| order# | item# | 
+----------+--------+ 
| 1  | 11 | 
| 2  | 12 | 
| 2  | 22 | 
+----------+--------+ 
+0

如果只有數字,會不會有條件格式化?說偶數紅色和奇數黃色? –

+0

它不一定是奇數,甚至可能是整張紙是偶數或整張紙都是奇數,但具有不同的重複值。 – CairoCoder

回答

2

住宿條件格式化,如:

=MOD(ROUND(SUM(1/COUNTIF($A$2:$A2,$A$2:$A2)),0),2)=0 
'and the other color 
=MOD(ROUND(SUM(1/COUNTIF($A$2:$A2,$A$2:$A2)),0),2)=1 

不需要VBA或運行每當你改變某些東西時宏您的列表將複製A2的範圍公式:B100

+0

這是完美的工作。 – CairoCoder

+0

不客氣 –

1

這應該做的伎倆:

Sub test_CairoCoder() 
Dim wS As Worksheet, _ 
    LastRow As Long, _ 
    ColorChg As Boolean, _ 
    OrderNb As String 

Set wS = ActiveSheet 
ColorChg = False 

With wS 
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row 
    OrderNb = wS.Cells(2, 1) 
    For i = 2 To LastRow 
     If .Cells(i, 1) <> .Cells(i + 1, 1) And .Cells(i, 1) <> .Cells(i - 1, 1) Then 
      ColorChg = Not ColorChg 
      If ColorChg Then 
       .Range(.Cells(i, "A"), .Cells(i + 1, "A")).Interior.Color = vbRed 
      Else 
       .Range(.Cells(i, "A"), .Cells(i + 1, "A")).Interior.Color = vbYellow 
      End If 
     Else 
      If .Cells(i, 1) <> .Cells(i + 1, 1) Then 
      Else 
       If OrderNb <> .Cells(i, 1) Then 
        OrderNb = .Cells(i, 1) 
        ColorChg = Not ColorChg 
       Else 
       End If 

       If ColorChg Then 
        .Range(.Cells(i, "A"), .Cells(i + 1, "A")).Interior.Color = vbRed 
       Else 
        .Range(.Cells(i, "A"), .Cells(i + 1, "A")).Interior.Color = vbYellow 
       End If 
      End If 
     End If 
    Next i 
End With 
MsgBox "All done!", vbInformation + vbOKOnly 

End Sub 
+0

它只處理重複的值,但不處理單個值。 – CairoCoder

+0

也所有的紙張都是彩色的,我只想選擇列 – CairoCoder

+0

Litteraly選定的列或列A或列A和B?編輯確實是A和B! ;) – R3uK

1

試試這個:

Sub test() 
    Dim i&, x&, cl As Range, Dic As Object 
    Set Dic = CreateObject("Scripting.Dictionary"): Dic.CompareMode = vbTextCompare 
    i = [A:A].Find("*", , xlValues, , xlByRows, xlPrevious).Row 
    x = [1:1].Find("*", , xlValues, , xlByColumns, xlPrevious).Column 
    For Each cl In Range("A2:A" & i) 
     If Not Dic.exists(cl.Value2) Then 
      Dic.Add cl.Value2, IIf(Dic.Count Mod 2 = 0, vbRed, vbYellow) 
     End If 
    Next cl 
    For Each cl In Range("A2:A" & i) 
     Range(cl, Cells(cl.Row, x)).Interior.Color = Dic(cl.Value2) 
    Next cl 
End Sub 
0

單擊您想要更改顏色的列。選擇格式和格式列。您可以在一個位置編輯或自定義所有屬性。 Excel templates提供使用Microsoft Excel設計的大量模板。希望看到這將有助於您瞭解與預設計模板相關的優勢。