我注意到123456在 Excel 中可以將類似數值視為數字或非數字。混合數字和非數字可能會導致=或 的意外結果XLOOKUP。
例如,在下面的作業表中,D3is=ISNUMBER(C3)的公式和D4is的公式=ISNUMBER(C4)。他們的價值觀并不相同。然后=C3=C4在另一個單元格中將回傳 FALSE;=XLOOKUP(C3,C4,C4)會回來#N/A。

因此,避免此類意外的一種解決方案是,在對它們應用公式之前,我想將所有這些數值從數字轉換為非數字。
有誰知道是否可以通過手動操作進行這種轉換(選擇范圍,然后...)?
有誰知道如何通過VBA中的子程式來實作這種轉換(選擇范圍,然后運行VBA子程式,然后將轉換選定的范圍)?
uj5u.com熱心網友回復:
如果你首先在一個范圍內寫數字,讓我們說“C:C”,格式為
General,TRUE當你嘗試時,任何這樣的單元格都會回傳=ISNUMBER(C4)。如果初步格式的范圍內
Text,并在此之后寫一個數字,這將被Excel被看作是一個String(非數字,像你說的......),并=ISNUMBER(C4)回傳False。現在,如果您嘗試
Text在寫入數字后格式化范圍,這些單元格不會以=ISNUMBER(C4)回傳FALSE. 為此,您可以使用TextToColumns,如下例所示:
Private Sub testTextToCol()
Dim sh As Worksheet, rng As Range
Set sh = ActiveSheet
Set rng = sh.Range("C:C")
rng.TextToColumns Destination:=rng, FieldInfo:=Array(1, 2)
End Sub
它將使現有的=ISNUMBER(C4),最初回傳的TRUE,回傳FALSE......
uj5u.com熱心網友回復:
當然,您不能將蘋果與橙子進行比較,因此字串無法與整數/長整數/數字進行比較。確保你比較的都是蘋果。
在例行公事中,這將是 s.th。喜歡
Option Explicit
Sub changeFormat():
' Declare variables
Dim Number As Variant
Dim check As Boolean
'Converts the format of cells D3 and D4 to "Text"
Range("D3:D4").NumberFormat = "@"
'Assign cell to be evaluated
Number = Range("D3")
Debug.Print Number 'Prints '123'
check = WorksheetFunction.IsText(Trim(Sheets("Tabelle1").Cells(4, 3)))
Debug.Print check 'Prints True
'Converts the format of cells D3 and D4 to "Numbers"
Range("D3:D4").NumberFormat = "0.00"
'Compare Cells
If Range("D3").NumberFormat = Range("D4").NumberFormat Then Range("D5").Value = "Same Format"
End Sub
另請參閱檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/384773.html
下一篇:遍歷列過濾時可見的資料
