Здравствуйте. Помогите пожалуйста, что то не получается. Есть ячейки
155+100
100+200
100
Пытаюсь обрезать все что после символа и суммировать - формула=СУММ(ЕСЛИОШИБКА(ЕСЛИ(ПОИСК("+";B4:B6);--ПОДСТАВИТЬ(B4:B6;"+";ЛЕВСИМВ(B4:B6;ПОИСК("+";B4:B6)-1)));0))
Выдает результат
255255300
1. Получается не обрезает, а что то не понятное. Хотя используя отдельно формулу ЛЕВСИМВ(B4:B6;ПОИСК("+";B4:B6)-1) - работает 2. Не правильно суммирует, должно быть 355
написал: andypetr , пожалуста собственно ваша формула ...почти:=-СУММПРОИЗВ(-ЛЕВБ(0&B4:B7;ПОИСК("+";B4:B7&"+")))
Спасибо формулы работают. Единственное когда фильтр включаю считает все ячейки видимые и не видимые. Как можно изменить формулу, что бы только видимые считало?
вариант, конечно, но не очень логично НЕ использовать найденную позицию. Либо использовать её, либо сразу сплитовать и проверять массив, как мне кажется.
2 варианта
Код
' Faster
Function GetFragment(s$) As String
Dim i&
i = InStr(s, "/")
If (i = 0) Then GetFragment = s Else GetFragment = Left$(s, i - 1)
End Function
'==================================================================================================
' Slowler
Function GetFragment2(s$) As String
Dim x
x = Split(s, "/")
If (UBound(x) = 0) Then GetFragment2 = s Else GetFragment2 = x(0)
End Function
Нужный (строковый) тип функции тоже лучше объявлять.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
написал: ' Faster Function GetFragment(s$) As String Dim i& i = InStr(s, "/") If (i = 0) Then GetFragment = s Else GetFragment = Left$(s, i - 1) End Function '================================================================================================== ' Slowler Function GetFragment2(s$) As String Dim x x = Split(s, "/") If (UBound(x) = 0) Then GetFragment2 = s Else GetFragment2 = x(0) End Function
Это через код страницы как я понимаю А в гугл таблицах его же не вставить?
' Faster
Function GetFragment(s$) As String
GetFragment = Left(s, InStr(s + "/", "/") - 1)
End Function
'==================================================================================================
' Slowler
Function GetFragment2(s$) As String
GetFragment2 = Split(s, "/")(0)
End Function
andypetr, со 2ым вариантом соглашусь (сначала брал x(1), пока не уточнил ТЗ), то для 1го делать ненужную сцепку только ради краткости никогда бы не стал … Скорость мне важнее
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄