簡體   English   中英

宏可根據單元格內容有條件地格式化行

[英]Macro to Conditionally Format rows based on cell contents

我有一個每天早晨導出的文件。 我編寫了一個宏,以刪除不必要的列,並從文件中導出的電話號碼中刪除連字符。 我的最后一步是突出顯示行,其中電話號碼與“請勿打擾”電話號碼列表中的電話號碼匹配。

底部應突出顯示工作表中的行,其中C(n)等於以下任何值(電話號碼...)

Sub Annihilation()
'
' Annihilation Macro
' Highlight bad numbers, formats worksheet.
'

'
Range("B:B,D:D,E:E,G:G").Select
Range("G1").Activate
Selection.Delete Shift:=xlToLeft
Range("C2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Columns("C:C").EntireColumn.AutoFit
Range("C2").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=OR($C2= 2025211493, $C2=2063919340, $C2=2096568626, $C2=2184943359, $C2=2535203630, $C2=2533306498, $C2=4055763188, $C2=4057014173, $C2=4235861076, $C2=5019450123, $C2=5036781060, $C2=5036071088, $C2=5094532476, $C2=5138697827, $C2=5175070612, $C2=5409662174, $C2=5592714006, $C2=5613334173, $C2=5626224977, $C2=6152069720, $C2=6194611018, $C2=6206408997, $C2=7086919068, $C2=7028252742, $C2=7173546777, $C2=7609497400, $C2=7634446852, $C2=7702050218, $C2=8002263696, $C2=8017841482,  $C2=8015756500, $C2=8063641273, $C2=8179243829, $C2=8436654968, $C2=8476561100, $C2=8608150728, $C2=8602171111, $C2=8669710959, $C2=8883420784, $C2=9197901354, $C2=9199349948, $C2=9519245300, $C2=9703020157)"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = 0.399945066682943
End With
Selection.FormatConditions(1).StopIfTrue = False

End Sub當我運行此命令時,行將以指定的顏色突出顯示,但所選行不是包含任何這些數字的行。

在這方面有什么幫助嗎? 代碼不正確嗎?

嘗試將FormatConditions Formula1行更改為$ C1而不是$ C2,因為您將其應用於單元格。 否則,它將向下看而不是同一行:

"=OR($C1={2025211493,2063919340,2096568626,2184943359,2535203630,2533306498,4055763188,4057014173,4235861076,5019450123,5036781060,5036071088,5094532476,5138697827,5175070612,5409662174,5592714006,5613334173,5626224977,6152069720,6194611018,6206408997,7086919068,7028252742,7173546777,7609497400,7634446852,7702050218,8002263696,8017841482, 8015756500,8063641273,8179243829,8436654968,8476561100,8608150728,8602171111,8669710959,8883420784,9197901354,9199349948,9519245300,9703020157})"

或者,您可以使用1列存儲所有數字-為每個組上色以便於查找。

將NO呼叫號碼放在最上面。

1個單元格= xxxx或任何用作可視分隔符的唯一文本。

在它們下方,以及您要檢查與否的所有電話號碼。

選擇您的列>數據標簽>刪除重復項

原始的沒有電話號碼會保留在最前面,然后將其余電話號碼與它們進行比較並刪除。

然后,您可以選擇列F5,並在需要合並時選擇並刪除所有空行。 再次,您的“無電話”仍停留在頂部,分隔符單元下方的任何內容都清晰可見。

如果您想在這種列視圖中簡化導航,請凍結大約10列前幾行,並將其僅用於導航鏈接:

例如= HYPERLINK(CONCATENATE(“#”,CELL(“ Address”,$ A $ 11)),“ TO TOP”)

= HYPERLINK(CONCATENATE(“#”,CELL(“ Address”,INDEX($ A $ 1:$ B $ 1000,MATCH(“ xxxx”,$ A $ 1:$ B $ 1000,0)+0))),“”分隔符”)

xxxx是您要查找的分隔符-這東西只是找到分隔符地址,如果它移動了,它將移動到列表中。 如果要偏移到+-位置,請更改+0。

有點困惑。 我看不到上面代碼中的代碼實際上如何導致以任何方式對多行進行格式化。 無論如何,這是我的建議:

Dim r As Range
Set r = Range("A2:G6") 'figure out how to set this to your appropriate range
         'It should be a range starting at the first cell in the data range, and end in the last cell

r.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=OR($C2= 2025211493, $C2=2063919340, $C2=2096568626, $C2=2184943359, $C2=2535203630, $C2=2533306498, $C2=4055763188, $C2=4057014173, $C2=4235861076, $C2=5019450123, $C2=5036781060, $C2=5036071088, $C2=5094532476, $C2=5138697827, $C2=5175070612, $C2=5409662174, $C2=5592714006, $C2=5613334173, $C2=5626224977, $C2=6152069720, $C2=6194611018, $C2=6206408997, $C2=7086919068, $C2=7028252742, $C2=7173546777, $C2=7609497400, $C2=7634446852, $C2=7702050218, $C2=8002263696, $C2=8017841482,  $C2=8015756500, $C2=8063641273, $C2=8179243829, $C2=8436654968, $C2=8476561100, $C2=8608150728, $C2=8602171111, $C2=8669710959, $C2=8883420784, $C2=9197901354, $C2=9199349948, $C2=9519245300, $C2=9703020157)"
r.FormatConditions(r.FormatConditions.Count).SetFirstPriority
With r.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent2
    .TintAndShade = 0.399945066682943
End With
r.FormatConditions(1).StopIfTrue = False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM