На листе действует диапазонная формула - она выискивает определенное слово в диапазоне текстовых ячеек - и если находит там числа - то суммирует их общую сумму. Правым ограничителем формулы - может быть запятая, тире, пустое место, пробел (в настоящий момент - это вроде только запятая).
Как заставить формулу извлекать числа с указанными ограничителями по правую сторону (запятая, тире, пустое место, пробел) ?
На листе действует диапазонная формула - она выискивает определенное слово в диапазоне текстовых ячеек - и если находит там числа - то суммирует их общую сумму. Правым ограничителем формулы - может быть запятая, тире, пустое место, пробел (в настоящий момент - это вроде только запятая).
Как заставить формулу извлекать числа с указанными ограничителями по правую сторону (запятая, тире, пустое место, пробел) ?RipVanWinkel
RipVanWinkel, сколько ещё будет тем создано вместо того, чтобы один раз сразу привести нормальный пример? Сделал на регулярках
Код
=getsum(N8:P30;S6)
[vba]
Код
Function getsum(t As Range, p$) Application.Volatile For Each c In t s = s + getnum(c, p) Next getsum = s End Function
Function getnum(ByVal t$, ByVal p$) With CreateObject("VBScript.Regexp") .Pattern = p & "\d+" If .test(t) Then v = .Execute(t)(0) v = Replace(v, p, "") v = Replace(v, "0", "0,") getnum = --v Else getnum = 0 End If End With End Function
[/vba]
RipVanWinkel, сколько ещё будет тем создано вместо того, чтобы один раз сразу привести нормальный пример? Сделал на регулярках
Код
=getsum(N8:P30;S6)
[vba]
Код
Function getsum(t As Range, p$) Application.Volatile For Each c In t s = s + getnum(c, p) Next getsum = s End Function
Function getnum(ByVal t$, ByVal p$) With CreateObject("VBScript.Regexp") .Pattern = p & "\d+" If .test(t) Then v = .Execute(t)(0) v = Replace(v, p, "") v = Replace(v, "0", "0,") getnum = --v Else getnum = 0 End If End With End Function