[英]Check Cell Formatting in Excel
進入VBE並添加一個空模塊。 將以下代碼復制到該模塊中:
Option Explicit
Public Function IsFormatted(FormattedCell As Range) As Byte
IsFormatted = 0
If InStr(1, FormattedCell.Cells(1, 1).NumberFormat, "$", vbTextCompare) >= 1 Then IsFormatted = 1
End Function
然后你就可以使用這樣的函數: =IsFormatted(D2)
。
注意:貨幣的通用數字格式是使用$符號而不是£。 這會根據您的Windows設置自動轉換為英國貨幣。 如果你想確保人們已經將單元格的格式設置為UK£,那么你需要在上面的代碼中更改以下行:
If InStr(1, FormattedCell.Cells(1, 1).NumberFormat, "[$£-809]", vbTextCompare) >= 1 Then IsFormatted = 1
請記住,上述功能volatile
。 這意味着如果引用的單元格被更改,函數的值將不會更改。 換句話說:如果你檢查像是這樣的單元格=IsFormatted(D2)
並且我們假設這個公式在單元格F2中,那么當D2格式不正確時F2將為0。 現在,如果正確格式化D2,那么F2仍將顯示0.因此,您必須使用F9
強制更新工作表,或者將Application.Volatile
添加到上述函數中。 然而,這可能會顯着減慢您的Excel。 請查看以下文章以獲取更多詳細信息: http : //www.excel-easy.com/vba/examples/volatile-functions.html
您可以使用a = Right(左(范圍(“D3”)。numberformat,3),1)來查看它所處的格式。根據它提取的字符串,您將能夠找到貨幣符號。顯示在單元格中。
您還可以將范圍更改為動態變量以檢查所需的任何單元格。
您可以在沒有VBA且只使用Excel公式的情況下執行此操作,但是,有一個警告可能對您很重要,也可能不重要。
在評分表中輸入此公式。
=IF(LEFT(CELL("format",testSheet!D2),1)=",",1,0)
CELL("format",
參數返回,[decimal places]
貨幣格式化單元格的,[decimal places]
LEFT(...,1)
返回字符串中第2個字母的第一個字母 IF
包裝說,如果該格式的第一個字符是,
然后1,否則為0。 £
或$
或任何其他符號,所以我不知道是否有必要進行測試。 最后,您可以修改此公式以測試2個小數位,如此
=IF(LEFT(CELL("format",testSheet!D2),2)=",2",1,0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.