如果我在 A 列中有一個從 1 到 1000 的值串列,我如何格式化該列,使每個值都是“0000”,即。基于 len(max(A:A)) 這將是 4。這需要依賴于最大值。
如果 A 列中的最大值為 10,500,我希望每個值的格式為“00000”。有什么方法可以自動設定它 - 無論是在 VBA 中還是在其他格式化方法中?謝謝
uj5u.com熱心網友回復:
Option Explicit
Public Sub example()
' define the location/column
Dim Location As Range
Set Location = ThisWorkbook.Worksheets("Sheet1").Range("A:A")
' get the amount of digits the maximum number has
Dim Digits As Long
Digits = Len(CStr(Application.WorksheetFunction.Max(Location)))
' set the number format of the location to the amount of digits
Location.NumberFormat = String(Digits, "0")
End Sub
或者甚至更好地撰寫一個可以在任何范圍內重復使用的通用程序:
Option Explicit
Public Sub SetNumberFormatToMaxDigits(ByVal Location As Range)
Dim Digits As Long
Digits = Len(CStr(Application.WorksheetFunction.Max(Location)))
Location.NumberFormat = String(Digits, "0")
End Sub
就這樣稱呼它
SetNumberFormatToMaxDigits ThisWorkbook.Worksheets("Sheet1").Range("A:A")
uj5u.com熱心網友回復:
Range("A2:A10").NumberFormat="00000"
應該這樣做。要獲得更多動態,例如:
set rng = Range("A2:A10")
rng.NumberFormat = Left("0000000000000", len(application.max(rng)))
(快速撰寫且未經測驗 - 手頭沒有 Excel)
uj5u.com熱心網友回復:
要將 NumberFormat 設定為在 VBA 中具有前導零,您可以使用Range.NumberFormat="0…0"So,4 個零將是Range.NumberFormat="0000",5 個零將是Range.NumberFormat="00000"等。
要動態創建正確數量的零,我們可以使用該String函式。例如,Range.NumberFormat = String(4, "0")對于 4 個零,或 Range.NumberFormat = String(5, "0")對于 5 個零。
要計算文本的最大長度的范圍內,我們可以使用SUMPRODUCT,MAX和LEN作業表函式:=SUMPRODUCT(MAX(LEN(A:A)))。為確保這始終至少為 4,我們在MAX: 中包含 4 =SUMPRODUCT(MAX(4, LEN(A:A)))。
要在 VBA 中使用它,我們可以將它傳遞給EvaluateWorksheet的函式。例如,如果該列在 中Sheet1,則可以使用Sheet1.Evaluate("SUMPRODUCT(MAX(4, LEN(A:A)))")來獲取該列的最大長度。(如果您有標題,您可能需要更準確地指定您的資料,而不僅僅是A:A整個列——或者確保標題不超過4 個字符!)
并且,將所有內容組合成一個范圍的簡潔代碼:
'Define Range however you want
Dim Target AS Range
Set Target = Sheet1.Columns(1)
'Set the NumberFormat
With Target
.NumberFormat = String(.Worksheet.Evaluate("SUMPRODUCT(MAX(4,LEN(" & .Address() & ")))"), "0")
End With
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/353778.html
