Страницы: 1
RSS
Удалить часть строки после символа, обрезать left mid
 
Добрый день!
Как сделать строку вида:
www.planetaexcel.ru/forum/index.php
www.planetaexcel.ru/
Найти символ / и удалить всё что за ним.
=LEFT(...MID(/)..))

Какая формула точно нужна? я пробывал - не получилось у меня.
 
Код
=ЛЕВСИМВ(A2;ПОИСК("/";A2)-1)
Изменено: V - 16.09.2013 10:55:22 (перемудрил)
 
ctrl+h
Я сам - дурнее всякого примера! ...
 
можно и так
Код
=ПСТР(A4;1;ПОИСК("/";A4)-1)
Вполне такой нормальный кинжальчик. Процентов на 100
 
Кстати, вопрос: а почему по русски? не уже это удобно? я присто всегда стараюсь писать по анг. функции.
 
а почему бы и нет?
Учимся сами и помогаем другим...
 
А можно доработать с условием IF, если нет символа, то просто копирут или ничего не обрезает.
если А2 вида www.planetaexcel.ru то В2 = A2
 
Код
=ЕСЛИ(ЕОШИБКА(ПОИСК("/";A2));A2;ЛЕВСИМВ(A2;ПОИСК("/";A2)-1))
 
Добрый вечер! Подскажите, пожалуйста, формулу: как удалить в строках нумерацию вместе с точкой?
Изменено: Andrey Ch - 21.11.2013 01:13:36
 
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПСТР(A2;5;500);СИМВОЛ(160);))
 
Код
=СЖПРОБЕЛЫ(ПОДСТАВИТЬ(ПСТР(A2;ПОИСК(".";A2)+1;ДЛСТР(A2));СИМВОЛ(160);""))
 
Простите чайника, но ГДЕ и КАК? :(
 
Там и так :)
Вставляете формулу в ячейку свободного столбца (например, В2) и копируете ячейку по строкам ниже.
 
О, благодарю Вас!! :D
 
Здравствуйте.
Помогите пожалуйста, что то не получается.
Есть ячейки
155+100
100+200
100
Пытаюсь обрезать все что после символа и суммировать - формула=СУММ(ЕСЛИОШИБКА(ЕСЛИ(ПОИСК("+";B4:B6);--ПОДСТАВИТЬ(B4:B6;"+";ЛЕВСИМВ(B4:B6;ПОИСК("+";B4:B6)-1)));0))

Выдает результат
255255300
1. Получается не обрезает, а что то не понятное. Хотя используя отдельно формулу ЛЕВСИМВ(B4:B6;ПОИСК("+";B4:B6)-1) - работает
2. Не правильно суммирует, должно быть 355
 
Код
{=СУММ(ЕСЛИОШИБКА(--ЛЕВСИМВ(B4:B6; ПОИСК("+"; B4:B6&"+")-1); 0))}
А ваша формула превращает:
155+100 => 155155100
100+200 => 100100200
100         => 0
Изменено: andypetr - 15.05.2024 06:45:16
 
Цитата
proftp:   Пытаюсь обрезать все что после символа и суммировать ... должно быть 355
=СУММПРОИЗВ(ОТБР(0&ПОДСТАВИТЬ(B4:B7;"+";",")))
 
Кстати, да, Павел \Ʌ/, спасибо за подсказку про не-массивную формулу!
Но я бы написал так:
Код
=СУММПРОИЗВ(--(ЛЕВСИМВ(B4:B6; ПОИСК("+"; B4:B6&"+")-1)&ПСТР(1/2;2;1)&"0"))
  1. Не зависит от кол-ва "+" в ячейках - всегда берётся левая часть: 100+200+300 => 100.
  2. Допускает отрицательные числа: -100+200+300 => -100.
  3. Не зависит от системного разделителя дробной части (например, у меня точка).
 
andypetr, пожалуста  ;)
собственно ваша формула ...почти:
=-СУММПРОИЗВ(-ЛЕВБ(0&B4:B7;ПОИСК("+";B4:B7&"+")))
 
Цитата
Найти символ / и удалить всё что за ним
UDF
Код
Function GetFragment(cell$)
   If InStr(1, cell, "/") > 0 Then
     GetFragment = Split(cell, "/", 2)(0)
   Else
     GetFragment = cell
   End If
End Function
Изменено: Kuzmich - 15.05.2024 23:12:05
 
Цитата
написал:
andypetr , пожалуста   собственно ваша формула ...почти:=-СУММПРОИЗВ(-ЛЕВБ(0&B4:B7;ПОИСК("+";B4:B7&"+")))
Спасибо формулы работают.
Единственное когда фильтр включаю считает все ячейки видимые и не видимые.
Как можно изменить формулу, что бы только видимые считало?
 
Цитата
Как можно изменить формулу, что бы только видимые считало
У меня получается только через доп. столбец.
В C4:
Код
=ЕСЛИ(АГРЕГАТ(3;1;B4); B4; "")
Ну и основная формула ссылается уже на столбец C:
Код
=СУММПРОИЗВ(--(ЛЕВСИМВ(C4:C6; ПОИСК("+"; C4:C6&"+")-1)&ПСТР(1/2;2;1)&"0"))
 
Цитата
Kuzmich: UDF
вариант, конечно, но не очень логично НЕ использовать найденную позицию. Либо использовать её, либо сразу сплитовать и проверять массив, как мне кажется.
2 варианта
Нужный (строковый) тип функции тоже лучше объявлять.
Изменено: Jack Famous - 20.05.2024 10:32:04
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
написал:
' 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
Это через код страницы как я понимаю
А в гугл таблицах его же не вставить?
 
Jack Famous, добрый день. Можно и компактнее :):
Код
' 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го делать ненужную сцепку только ради краткости никогда бы не стал … Скорость мне важнее  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, почему же эта сцепка "ненужная"? разве эта сцепка в этом варианте не нужна? и скорость с ней нисколько не страдает :)
 
=SUMPRODUCT(--LEFT(0&SUBSTITUTE(B4:B7;"+";"     ");5))
для универсальности
=SUMPRODUCT(--LEFT(0&SUBSTITUTE(B4:B7;"+";REPT(" ";14);15))


Цитата
proftp написал:
Как можно изменить формулу, что бы только видимые считало?
- это совершенно иной вопрос и иная тема.
Изменено: БМВ - 20.05.2024 13:30:58
По вопросам из тем форума, личку не читаю.
 
Всем спасибо за помощь!
Страницы: 1
Наверх