непроверенная.Если я правильно понял, ячейки разделяются символом новой строки.
Так что может быть что-то вроде:
Option explicit
Private Sub SplitAndTotal()
' Change name of sheet as necessary
With thisworkbook.worksheets("Sheet1")
.range("V1").value2 = SplitIntoNumbersAndSum(.range("S1").value2) + _
SplitIntoNumbersAndSum(.range("T1").value2) + _
SplitIntoNumbersAndSum(.range("U1").value2)
End with
End sub
Private Function SplitIntoNumbersAndSum(byval valueToSplit as variant, optional byval delimiter as string = vbnewline) as double
Dim Total as double
Dim arrayOfValues as variant
arrayOfValues = split(valueToSplit, delimiter, -1, vbbinarycompare)
Dim index as long
For index = lbound(arrayOfValues) to ubound (arrayOfValues)
If isnumeric(arrayOfValues(index)) then
Total = total + cdbl(arrayOfValues(index))
End if
Next index
SplitIntoNumbersAndSum = Total
End function
Извините за плохое форматирование и отступы, а не на рабочем столе.
Если функция постоянно возвращает ноль, попробуйте проверить / изменить delimiter
.
Вы также можете попробовать вызвать функцию как UDF непосредственно из самой таблицы (хотя вам может потребоватьсякод функции в отдельном модуле), в отличие от вызова его через специальный макрос / процедуру.