Добрый день, форумчане. Помогите с макросом. Требуется заменить в ячейке числовые данные (в первых скобках), прибавив к ним 6, т.е. имеем ячейки со строками: i_punkt3 POSITION(1968:1972) CHAR NULLIF(i_punkt3=' '), i_r1 POSITION(1973:1974) INTEGER EXTERNAL NULLIF(i_r1='00'), Должно получиться: i_punkt3 POSITION(1974:1978) CHAR NULLIF(i_punkt3=' '), i_r1 POSITION(1979:1980) INTEGER EXTERNAL NULLIF(i_r1='00'),
Спасибо.
Добрый день, форумчане. Помогите с макросом. Требуется заменить в ячейке числовые данные (в первых скобках), прибавив к ним 6, т.е. имеем ячейки со строками: i_punkt3 POSITION(1968:1972) CHAR NULLIF(i_punkt3=' '), i_r1 POSITION(1973:1974) INTEGER EXTERNAL NULLIF(i_r1='00'), Должно получиться: i_punkt3 POSITION(1974:1978) CHAR NULLIF(i_punkt3=' '), i_r1 POSITION(1979:1980) INTEGER EXTERNAL NULLIF(i_r1='00'),
Function d_plus_6(str As String) Dim arr_(0 To 1) With CreateObject("VBScript.RegExp") .Pattern = "(\d+):(\d+)" Set oMatch = .Execute(str) For d = 0 To 1 arr_(d) = Val(oMatch(0).submatches.Item(d)) + 6 Next d newd = Join(arr_, ":") d_plus_6 = .Replace(str, newd) End With End Function
[/vba]
Тренирую RegExp [vba]
Код
Function d_plus_6(str As String) Dim arr_(0 To 1) With CreateObject("VBScript.RegExp") .Pattern = "(\d+):(\d+)" Set oMatch = .Execute(str) For d = 0 To 1 arr_(d) = Val(oMatch(0).submatches.Item(d)) + 6 Next d newd = Join(arr_, ":") d_plus_6 = .Replace(str, newd) End With End Function