Здравствуйте. Перелопатил форум и не только этот,но так и не нашел для себя ответ. В Exel не силен,простейшие действия могу сделать,но вот встала задача сумировать числа вида 4,45; 5,1; 3,2; 6,9; 3,3; 7,2; и так дальше из одной ячейки . и вторая задача из этой же ячейки сумировать числа меньше 5 ( тоесть 4,45 + 3,2 + 3,3 и так дальше).
Прикрепил пример. Там все числа красные как-то надо сумировать отдельно .
Вручную считать отнимает прилично времени если приходиться обрабатывать кучу инфы.
Здравствуйте. Перелопатил форум и не только этот,но так и не нашел для себя ответ. В Exel не силен,простейшие действия могу сделать,но вот встала задача сумировать числа вида 4,45; 5,1; 3,2; 6,9; 3,3; 7,2; и так дальше из одной ячейки . и вторая задача из этой же ячейки сумировать числа меньше 5 ( тоесть 4,45 + 3,2 + 3,3 и так дальше).
Прикрепил пример. Там все числа красные как-то надо сумировать отдельно .
Вручную считать отнимает прилично времени если приходиться обрабатывать кучу инфы.Nerovinger
Sub u_700() Application.ScreenUpdating = False c = Cells(Rows.Count, "d").End(xlUp).Row For Each d In Range("d3:d" & c) f = d.Address 'все h = Replace(Replace(Replace(d, "(!)", ""), ",", "."), ";", "+") j = Evaluate(h) d.Offset(0, 1) = j 'красные e = Len(d) x = "" For i = 1 To e u = Range(f).Characters(Start:=i, Length:=1).Font.ColorIndex v = Mid(d, i, 1) If u = 3 Or v = ";" Then If v = ";" Then v = "+" x = x & v End If Next i a = Replace(Replace(x, "(!)", ""), ",", ".") b = Evaluate(a) g = Application.IsNumber(b) If g Then d.Offset(0, 2) = b '<5 k = d & ";" l = Len(k) m = Replace(k, ";", "") n = Len(m) o = l - n r = "" For p = 1 To o q = InStr(k, ";") s = Replace(Mid(k, 1, q - 1), "(!)", "") If s >= 5 Then s = "" r = r & "+" & s k = Mid(k, q + 1, l) Next p aa = Replace(r, ",", ".") ab = Evaluate(aa) ac = Application.IsNumber(ab) If ac Then d.Offset(0, 3) = ab Next Application.ScreenUpdating = True End Sub
[/vba] исправил надо было не >, а >=
как-то так, наскоряк [vba]
Код
Sub u_700() Application.ScreenUpdating = False c = Cells(Rows.Count, "d").End(xlUp).Row For Each d In Range("d3:d" & c) f = d.Address 'все h = Replace(Replace(Replace(d, "(!)", ""), ",", "."), ";", "+") j = Evaluate(h) d.Offset(0, 1) = j 'красные e = Len(d) x = "" For i = 1 To e u = Range(f).Characters(Start:=i, Length:=1).Font.ColorIndex v = Mid(d, i, 1) If u = 3 Or v = ";" Then If v = ";" Then v = "+" x = x & v End If Next i a = Replace(Replace(x, "(!)", ""), ",", ".") b = Evaluate(a) g = Application.IsNumber(b) If g Then d.Offset(0, 2) = b '<5 k = d & ";" l = Len(k) m = Replace(k, ";", "") n = Len(m) o = l - n r = "" For p = 1 To o q = InStr(k, ";") s = Replace(Mid(k, 1, q - 1), "(!)", "") If s >= 5 Then s = "" r = r & "+" & s k = Mid(k, q + 1, l) Next p aa = Replace(r, ",", ".") ab = Evaluate(aa) ac = Application.IsNumber(ab) If ac Then d.Offset(0, 3) = ab Next Application.ScreenUpdating = True End Sub