Нашел тему, где Михаил С. выложил макрос, позволяющий суммировать числа разделенные дробью. Как нужно изменить его, чтобы он эти числа не суммировал, а умножал. Пробовал тупо заменить + на *, но ничего не вышло. Файл выложенный Михаилом прикрепил.
Код
Function СУМДРОБ(rn As Range) As String
Dim a, S0&, S1&, Cel As Range
For Each Cel In rn
If Cel <> "" Then
a = Split(Cel, "/")
S0 = S0 + Val(a(0))
If UBound(a) = 1 Then S1 = S1 + Val(a(1))
End If
Next
СУМДРОБ = S0 & "/" & S1
End Function
Игорь, я всего лишь выложил файл Михаила в своем первоначальном виде для наглядности. Оглавления в нем меня не интересуют. Мне нужно понять как изменить код, чтобы он умножал, а не складывал.
Function ПроизвДРОБ(rn As Range) As String
Dim a, S0&, S1&, Cel As Range
S0 = 1: S1 = 1
For Each Cel In rn
If Cel <> "" Then
a = Split(Cel, "/")
S0 = S0 * Val(a(0))
If UBound(a) = 1 Then S1 = S1 * Val(a(1))
End If
Next
ПроизвДРОБ = S0 & "/" & S1
End Function
не умножение стало возможным, а умножение приобрело смысл) S1 = S1 * Val(a(1)) умножайте S1 на любые Val(a(1)) - в результате будет 0 если в начале S1 было равно 0
Function PRODUCTCEL(MyRange As Range) As Double
Dim a, P#, Cel As Range
P = 1
For Each Cel In MyRange
If Cel <> "" Then
a = Split(Cel, "/")
If UBound(a) = 1 Then
P = P * (Val(a(0)) / Val(a(1)))
Else
P = P * Val(a(0))
End If
End If
Next Cel
PRODUCTCEL = Round(P, 1#)
End Function
DANIKOLA, Ваш макрос делит числа разделенные знаком "/" и затем перемножает. Мне нужно было всего лишь перемножить числа разделенные знаком "/" и получить сумму также разделенную этим знаком, что вышеупомянутый код и делает. Но по-любому, спасибо.