簡體   English   中英

在Excel中檢查單元格格式

[英]Check Cell Formatting in Excel

我正在嘗試進行簡單的Excel評估,並遇到了一個絆腳石。

“候選人”需要將單元格正確格式化為“貨幣”,以便在單元格中顯示£符號。

是否有一個函數可以在格式化單元格后檢查'£'的存在

功能欄僅將值顯示為沒有£符號的數字

功能欄值

在我的得分表上,我給出了正確答案的值“1”和錯誤的“0”。

因此,我可以使用一些建議來幫助我確定“候選人”是否正確格式化了單元格

在此輸入圖像描述

非常感謝

保羅

進入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)
  1. testSheet是候選表
  2. CELL("format",參數返回,[decimal places]貨幣格式化單元格的,[decimal places]
  3. LEFT(...,1)返回字符串中第2個字母的第一個字母
  4. IF包裝說,如果該格式的第一個字符是,然后1,否則為0。
  5. 這里有一點需要注意 ,格式可以是£$或任何其他符號,所以我不知道是否有必要進行測試。

最后,您可以修改此公式以測試2個小數位,如此

=IF(LEFT(CELL("format",testSheet!D2),2)=",2",1,0)

暫無
暫無

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

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