簡體   English   中英

VBA Conditional Format.rank 值基於單元格 - Top10

[英]VBA Conditional Format .rank value based on a cell - Top10

我最初需要 select 前 5% 的選定項目,但它無法四舍五入突出顯示項目的數量。 例如:如果列表中有 25 項,則 5% 為 1.25,條件格式僅選擇 1 項。 根據我的報告,它應該四舍五入 select 2 項。

由於找不到方法,我決定手動計算項目數,以顯示要突出顯示的項目數(在單元格中)。

  1. 如果有一種方法可以使條件格式對所選項目的數量進行四舍五入,那就更容易了。

例如:.rank = 5(但應該向上取整).percent = True

如果不可能,

  1. 我想使用條件格式突出顯示列中的前 X 值。 值 X(排名)在單元格中計算,每次運行宏時都會更改。

我已經嘗試了下面的代碼,但是它不起作用。

Dim i As Integer
    i = Workbooks("a.xlsm").Worksheets("b").Range("A1")

Selection.FormatConditions.AddTop10
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
    .TopBottom = xlTop10Top
    .Rank = i
    .Percent = False
End With
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0

End With

我在“.rank = i”行上遇到錯誤,這讓我認為不可能在那里分配變量,或者我可能錯誤地分配了單元格。

我還嘗試了“.rank = i.Value”,這似乎也是錯誤的(編譯錯誤:無效的限定符)

我是 vba 的新手,我們將不勝感激。

ps:使用office 365。

謝謝

更新:只要“i”值不為零,上面的代碼就可以工作。 我設法創建了一個簡單的 If 語句來防止錯誤。

'In my report i cannot be below 0
If i > 0 Then
  Insert the code above here
'If there is no data to be highlighted
Else
'Do Nothing
End If

如果非 VBA 解決方案可以為您工作,您可以使用它。 我制作了一個假數據集,只是一個包含 25 個值(數字 1 到 25)的列表。 您想突出顯示高 5% 的值。 25 的 5% = 1,25,但四舍五入為 2。因此,在這種情況下,您要突出顯示值是前 2 個值之一的任何單元格。

我懂了:

在此處輸入圖像描述

如您所見,值 25 和 24 被突出顯示。 我使用的條件格式規則 (CFR) 基於以下公式:

=RANK(A1;$A$1:$A$25;0)<=ROUNDUP(COUNTA($A$1:$A$25)*0,05;0)

這是它的工作原理:

  1. RANK(A1;$A$1:$A$25;0)將按降序排列列表中的值。
  2. ROUNDUP(COUNTA($A$1:$A$25)*0,05;0)將計算列表中有多少個單元格 (25) 並將獲得 5%(乘以 0,05,將 0,05 更改為% 你需要),它會將它四舍五入(在這種情況下,output 將為 2)。
  3. Last Step 會將 Step 1 的值與 step 2 的值進行比較。如果小於或等於 2(在這種情況下),它將突出顯示,如您所見

請注意,如果存在空白值,此 CFR 可能無法正常工作。

此外,好消息是,將 0,05 部分更改為您需要的任何 %,CFR 將完美更新。 您甚至可以將其綁定到單元格,並手動更改單元格的值:)

希望這對你有用!

ApplysTo屬性為您提供條件適用的范圍。 然后,您可以從中獲取單元格計數,將其乘以 5% 並使用 WorksheetFunction 將其四舍五入。

.Rank = WorksheetFunction.RoundUp(.AppliesTo.Cells.Count * 0.05, 0)
.Percent = False

暫無
暫無

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

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