[英]Apache POI formula to check any of the cell from the range is not blank
我正在使用條件格式處理Apache POI。 我希望能夠編寫一個公式,例如-如果指定范圍內的任何列都不是數字,則突出顯示所有這些列。 我正在嘗試使用公式-ISNUMBER($ J1:P1000)。 但這是行不通的。
ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule("ISNUMBER($J1:P1000))");
如果我只嘗試使用公式-ISNUMBER($ J1)的單個單元格,它將起作用。 但是我想確定如果從J到P的任何單元格都是數字,然后進行一些突出顯示。
該線程提供了基於某些規則突出顯示某些單元格的代碼的詳細信息,因此不再重復-Apache POI-條件格式-需要為規則和格式設置不同的單元格范圍
就我現在所理解的問題(還考慮了注釋)而言,如果此范圍內的任何單元格包含數字內容,則要求突出顯示整個范圍J1:P[n]
(例如,我將采用J1:P1000
)。 使用公式作為ConditionalFormattingRule
。
背景知識:
條件格式(CF)的工作原理是將規則應用於一系列單元格,並且如果滿足規則,則具有要使用的格式。 在運行CF進程時,將測試應用范圍內的每個單元格是否滿足規則。 如果是這樣,將使用該格式,否則將不使用。
因此,如果規則是一個公式,那么我們必須從范圍內每個單個單元格的角度來看這個公式。 公式中的單元格引用是相對的還是使用$
固定的,在其中起着重要作用。
在單元格引用中, $
可以固定列引用和行引用。 例如,在A1
,列引用和行引用都是相對的。 在$A1
,列參考列A
是固定和行參考是相對的。 在A$1
,列引用是相對的,而對行1
的行引用是固定的。 在$A$1
,對列A
的列引用以及對行1
的行引用都是固定的。 因此,最后一個引用將始終引用單元格A1
。
具體示例:
在我的答案中, Apache POI-條件格式-需要為規則和格式設置不同的單元格范圍 ,與此答案相關,公式規則: AND(ISNUMBER($C1), $C1>5)
應用於范圍G1:L1000
因此,從G1:L1000
的單個單元格的角度來看,該規則檢查以下內容:
$C
列中的單元格值(總是固定在C
列中,因為此引用是固定的)是否在單個單元格所在的同一行中(因為行引用是相對的),數字且大於5?
在注釋中,我建議將規則AND(ISNUMBER($C1), $C1>5, G1="")
應用於相同的范圍G1:L1000
。 這與上述檢查相同:
是存在單個單元格的G:L
列中的單個單元格(由於列引用是相對的,並不總是在G
列中),存在單個單元格的同一行(因為行引用是相對的),空(等於一個空字符串)?
現在您的實際需求:
“如果此范圍內的任何單元格包含數字內容,則突出顯示整個范圍J1:P1000
”
函數COUNT
僅計數數字。 因此,如果J1:P1000
中的任何單元格包含數字,則COUNT($J$1:$P$1000)
將大於0。
所以
ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule("(COUNT($J$1:$P$1000)>0)");
應用於CellRangeAddress.valueOf("J1:P1000")
可以按需要工作。
從上看每個單元的單電池的COUNT
必須計算的整個范圍。 這就是為什么$J$1:$P$1000
中的引用都是固定的而不是相對的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.