Страницы: 1
RSS
Найти все, что между слешами
 
использую формулу такую
Код
=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";""))=1;"су "&ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";"");"су"&ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";""))
как ее упростить, может есть варианты?

1. то есть если длина между слешами без слешов = 1 ставим пробел после "су ", если более 1 тогда без пробела "су"
2. нужны только то что между слешами
/3/ =3
/11/ =11
3. соединить 1 и 2
02-0012/3/2017су 3
02-0012/11/2017су11
Изменено: Goldenito - 23.12.2017 20:08:58
 
Цитата
Goldenito написал:
как ее упростить, может есть варианты?
А зачем?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
я думаю у меня неграмотно получилось с этой формулой
 
А файл-пример будет? Как есть-Как надо. И различных вариантов исходных данных не жалейте
Согласие есть продукт при полном непротивлении сторон
 
файл прикрепил
последнее что я придумал это вот, но она после слеша только берет все а надо до следующего слеша
=ПСТР(B1;ПОИСК("/";B1)+1;3)
Изменено: Goldenito - 23.12.2017 23:46:21
 
Goldenito,
А между слешами всегда цифры?
Почему в первой ячейке, где 02-0012/3/20 должно быть су3?
 
Цитата
Kuzmich написал: А между слешами всегда цифры?
да всегда
должно быть су 3 с пробелом, а все что начинается с су10 без пробела/ для того чтобы сортировка прошла успешно, а то получается что когда они с пробелами все, су 1,2,3 и т.д в таком порядке
су 1
су 10
су 11
су 2
су 3
такая странная сортировка
так выходит у меня

последняя моя формула вышла такая
=ЕСЛИ(ДЛСТР(ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";""))=1;"су "&ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";"");"су"&ПОДСТАВИТЬ(ПСТР(B1;ПОИСК("/";B1);3);"/";""))

но если между слешами более двух знаков, то он оставляет только два
Изменено: Goldenito - 23.12.2017 23:46:51
 
Цитата
должно быть су 3 с пробелом
У вас вроде было ограничение на длину в 14 символов
 
Цитата
Kuzmich написал:
ограничение
ограничение здесь не прошло, в других случаях это непрокатило
 
Я так понял, что вам нужно вытащить цифры между слешами, чтобы потом произвести сортировку по этим цифрам по возрастанию.
Тогда лучше делать
су001
су017
су111
 
Цитата
Kuzmich написал:
Тогда лучше делать
су001
су017
су111
в этом та и фишка. что так мне нельзя делать, то есть там должно быть прописано без нулей
Изменено: Goldenito - 23.12.2017 20:17:52
 
Цитата
там должно быть прописано без нулей
для сортировки нули не помешают
Если у вас максимальное количество цифр между слешами =3,
то для правильной сортировки вам нужно добавлять два пробела, если одна цифра
и один пробел, если две цифры
 
Kuzmich,за это спасибо
да =3
как решить основную проблему то
 
UDF
Код
Function iSlesh(cell As String) As String
 With CreateObject("VBScript.RegExp")
     .Global = True
     .IgnoreCase = True
     .Pattern = "/\d{1,3}(?=/)"
     If Len(.Execute(cell)(0)) = 2 Then
       iSlesh = "су  " & Mid(.Execute(cell)(0), 2)
     ElseIf Len(.Execute(cell)(0)) = 3 Then
       iSlesh = "су " & Mid(.Execute(cell)(0), 2)
     ElseIf Len(.Execute(cell)(0)) = 4 Then
       iSlesh = "су" & Mid(.Execute(cell)(0), 2)
     End If
 End With
End Function
 
Kuzmich, спасибо, идеально получилось, если там будет больше 3, что мне изменить
 
Цитата
если там будет больше 3, что мне изменить
А сколько цифр может быть максимально?
 
Kuzmich, 5
нашел спасибо
.Pattern = "/\d{1,300}(?=/)"
Изменено: Goldenito - 23.12.2017 20:58:32
 
Что, 300 цифр может быть?
 
Kuzmich, да это я так, для эксперимента)
спасибо огромное
 
Если цифр будет 5, то
Код
.Pattern = "/\d{1,5}(?=/)"
и добавить еще условия для
одна цифра - добавляем 4 пробела
две цифры - добавляем 3 пробела
три цифры - добавляем 2 пробела
четыре цифры - добавляем 1 пробел
 
Цитата
Kuzmich написал:
4 пробела
да это все схвачено, спасибо понял
 
Плучить число:
=--ПСТР(ПОДСТАВИТЬ(B1;"/";ПОВТОР(" ";50));50;50)
Получить текст:
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(B1;"/";ПОВТОР(" ";50));50;50))
Слева добавляйте, что хотите: су, лису, колбасу :)
 
vikttur, спасибо
Страницы: 1
Наверх