Ребят, срочно нужен макрос. Допустим в одной ячейке два числа через запятую, нужно сделать так, чтобы при воспроизведении макроса в соседней ячейке появилась сумма этих чисел. Выручите пожалуйста
Ребят, срочно нужен макрос. Допустим в одной ячейке два числа через запятую, нужно сделать так, чтобы при воспроизведении макроса в соседней ячейке появилась сумма этих чисел. Выручите пожалуйста Clara
Public Function ATREGEX(ByRef text As Variant, _ ByRef pattern As Variant, _ Optional ByVal num_submatch As Long = -10, _ Optional ByRef new_text As Variant = "", _ Optional ByVal is_ignoreCase As Boolean = True, _ Optional ByVal is_global As Boolean = True) As Variant
Dim objRegex Dim colMatch Dim sMatchString As String Dim sSumMatch As Double Dim i As Integer
On Error GoTo err_
ATREGEX = ""
Set objRegex = CreateObject("vbscript.regexp")
With objRegex .Global = is_global .IgnoreCase = is_ignoreCase .pattern = pattern End With
If num_submatch >= -9 Then Set colMatch = objRegex.Execute(text)
If num_submatch = -1 Then ATREGEX = colMatch.Count Exit Function End If
If num_submatch = -2 Then sSumMatch = 0 For i = 0 To colMatch.Count - 1 sSumMatch = sSumMatch + CDbl(colMatch(i).Value) Next ATREGEX = sSumMatch Exit Function End If
If colMatch.Count = 0 Then ATREGEX = "" Else If num_submatch = 0 Then sMatchString = "" For i = 0 To colMatch.Count - 1 sMatchString = sMatchString + CStr(colMatch(i).Value) + "," Next ATREGEX = Left(sMatchString, Len(sMatchString) - 1) Else ATREGEX = colMatch(num_submatch - 1) End If End If Else ATREGEX = objRegex.Replace(text, new_text) End If
err_: End Function
[/vba]
[vba]
Код
=AtREGEX("1,2";"\d+";-2)
Public Function ATREGEX(ByRef text As Variant, _ ByRef pattern As Variant, _ Optional ByVal num_submatch As Long = -10, _ Optional ByRef new_text As Variant = "", _ Optional ByVal is_ignoreCase As Boolean = True, _ Optional ByVal is_global As Boolean = True) As Variant
Dim objRegex Dim colMatch Dim sMatchString As String Dim sSumMatch As Double Dim i As Integer
On Error GoTo err_
ATREGEX = ""
Set objRegex = CreateObject("vbscript.regexp")
With objRegex .Global = is_global .IgnoreCase = is_ignoreCase .pattern = pattern End With
If num_submatch >= -9 Then Set colMatch = objRegex.Execute(text)
If num_submatch = -1 Then ATREGEX = colMatch.Count Exit Function End If
If num_submatch = -2 Then sSumMatch = 0 For i = 0 To colMatch.Count - 1 sSumMatch = sSumMatch + CDbl(colMatch(i).Value) Next ATREGEX = sSumMatch Exit Function End If
If colMatch.Count = 0 Then ATREGEX = "" Else If num_submatch = 0 Then sMatchString = "" For i = 0 To colMatch.Count - 1 sMatchString = sMatchString + CStr(colMatch(i).Value) + "," Next ATREGEX = Left(sMatchString, Len(sMatchString) - 1) Else ATREGEX = colMatch(num_submatch - 1) End If End If Else ATREGEX = objRegex.Replace(text, new_text) End If