“插入” -》 “模塊”
Function FormatCodeFlex(inputStr As String, Optional defaultVal As String = "0") As StringOn Error GoTo ErrorHandlerDim parts() As StringDim i As Integer' 使用 "-" 分割字符串parts = Split(inputStr, "-")' 確保至少有3個部分,不足的用默認值填充ReDim Preserve parts(2)For i = 0 To 2If parts(i) = "" Then parts(i) = defaultValNext i' 格式化每個部分FormatCodeFlex = Format(parts(0), "00") & "-" & _Format(parts(1), "000") & "-" & _Format(parts(2), "000")Exit FunctionErrorHandler:FormatCodeFlex = "輸入無效!"
End Function
可能需要編譯一下。?不記得了
調用
記錄一下備忘。
寫一個 excel中的vba函數, 判斷 01-000-000 中的最后三位如果是 000 就返回0,如果不是000,就替換為000,并且返回整個字符串。
Function ProcessBOMCode(inputStr As String) As String
On Error GoTo ErrorHandler
Dim parts() As String
Dim lastPart As String
' 檢查輸入是否為空
If Trim(inputStr) = "" Then
ProcessBOMCode = "輸入為空"
Exit Function
End If
' 使用 "-" 分割字符串
parts = Split(inputStr, "-")
' 檢查是否有足夠的部分
If UBound(parts) < 2 Then
ProcessBOMCode = "格式錯誤,需要xx-xxx-xxx格式"
Exit Function
End If
' 獲取最后三位
lastPart = parts(2)
' 判斷最后三位是否為"000"
If lastPart = "000" Then
ProcessBOMCode = 0 ' 返回數字0
Else
' 替換最后三位為"000",并返回整個字符串
parts(2) = "000"
ProcessBOMCode = parts(0) & "-" & parts(1) & "-" & parts(2)
End If
Exit Function
ErrorHandler:
ProcessBOMCode = "處理錯誤"
End Function
寫一個excel的vba 處理 1 1-1 1-1-1 1-1-2 1-2 這樣的不定長數據,去掉最后的一個數據。
Function RemoveLastPart(inputStr As String) As String
On Error GoTo ErrorHandler
Dim parts() As String
Dim result As String
Dim i As Integer
' 檢查輸入是否為空
If Trim(inputStr) = "" Then
RemoveLastPart = ""
Exit Function
End If
' 使用 "-" 分割字符串
parts = Split(inputStr, "-")
' 如果只有一個部分,直接返回空字符串
If UBound(parts) = 0 Then
RemoveLastPart = ""
Exit Function
End If
' 重新組合除最后一部分之外的所有部分
For i = 0 To UBound(parts) - 1
If i > 0 Then result = result & "-"
result = result & parts(i)
Next i
RemoveLastPart = result
Exit Function
ErrorHandler:
RemoveLastPart = "處理錯誤"
End Function
Deepseek真強。