У меня есть набор кодов (C01.0001, S009.1002, A0056.0102), единственный параметр, который должен быть истинным всегда, - это то, что после точки стоят четыре числа. Моя цель - вычесть 1 (C01.0101-1 = C01.0100, S009.0002-1 = S009.0001 и др. c.). Я пробовал разные способы решить эту проблему, но я застрял. Помоги пожалуйста!! Вот что у меня получилось:
Sub Subsctruct_1()
Dim myCode As String, myResult As String
' Range("A1").Value = "C01.0002"
myCode = Range("A1").Value
myResult = Mid(myCode, Len(myCode) - 4, 5) - 1
Debug.Print myResult '-0.9999
End Sub
Это решение, благодаря помощи Брайана М. Стаффорда:
Sub Get_Code()
Dim Arr1 As Variant, ResNewCode As Variant
Dim i As Long, LastRow As Long
Dim EnvNm As String
LastRow = ShStart.Range("A" & Rows.Count).End(xlUp).Row
Arr1 = ShStart.Range("A2:A" & LastRow).Value
ResNewCode = ShStart.Range("F2:F" & LastRow).Value
For i = 1 To UBound(Arr1)
If Arr1(i, 1) <> "" Then
EnvNm = Subtract1(Arr1(i, 1))
ResNewCode(i, 1) = EnvNm
End If
Next i
ShStart.Range("F2").Resize(UBound(ResNewCode, 1), 1).Value = ResNewCode
End Sub
Public Function Subtract1(ByVal Code As String) As String
'Brian M Stafford's Solution ===> Thanks!
Dim v As Variant
v = Split(Code, ".")
Subtract1 = v(0) & "." & Format(Val(v(1)) - 1, "0000")
End Function