簡體   English   中英

Apache POI公式來檢查范圍中的任何單元都不為空

[英]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.

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