Страницы: 1 2 След.
RSS
Как развернуть комбинацию чисел, написанных через тире
 
В ячейке числа вводятся через тире : 40-45 (так быстрее и удобнее) Нужно, чтобы в другой это раскрывалось в 40,41,42,43,44,45.
 
Код
Function Expand(cell)
    Dim vHi, vLo, arr, r, s
    arr = Split(cell, "-")
    vLo = arr(0): vHi = arr(1)
    For r = vLo To vHi: s = s & r & ",": Next
    Expand = Left$(s, Len(s) - 1)
End Function
There is no knowledge that is not power
 
а нельзя формулой?  :)  Не очень я люблю макросы.. не понимаю их.)))))
 
Если числа двузначные можно ЛЕВСИМВ(А1;2), ПРАВСИМВ
Можно разбивать столбец по разделителю "-"
можно сделать замену "-" на","
Изменено: jey - 10.02.2015 12:38:11
 
Цитата
Honey пишет: Не очень я люблю макросы
Да? Ну попробуйте сделать формулой.
There is no knowledge that is not power
 
можно формулой разбивку в отдельные ячейки а потом собрать через сцепить
Лень двигатель прогресса, доказано!!!
 
Johny, огромное спасибо! :D
 
Цитата
Сергей пишет: можно формулой разбивку в отдельные ячейки а потом собрать через сцепить
Ого!
There is no knowledge that is not power
 
Не пойму, копирую в свой файл, формула отказывается работать. Форматы ячеек те же. Меняю лишь номер ячейки на нужный мне. Выходит ошибка #ИМЯ
 
Баловались... В какой теме - не помню.
Для желающих поиграться: массив из номеров (только виртуальный):
=СТРОКА(ИНДЕКС(A:A;ЛЕВБ(A1;ПОИСК("-";A1)-1)):ИНДЕКС(A:A;ПСТР(A1;ПОИСК("-";A1)+1;5)))
Возможно, сохранил у себя решение. Поищу. Но формула "не для слабонервных"   :)    
 
Сергей, У меня всегда разные числа, когда трехзначные, когда четырех-двух-однозначные. Можно ли сделать так, чтобы формула автоматически подбирала нужную комбинацию и раскрывала диапазон чисел...?
 
Цитата
Honey пишет: Выходит ошибка #ИМЯ
Дык у меня формула-то VBA-шная (т.н. UDF - User-Defined Function).  :D
There is no knowledge that is not power
 
так
Лень двигатель прогресса, доказано!!!
 
vikttur, мда))) Круто! А что именно мне менять под себя? Массив? Ячейку? У меня все такие вот числа через тире только на одной строке. Но столбцы разные. Плюс не во всех есть такая комбинация. Т.е. где-то надо где-то нет.
 
Если с разбивкой по ячейкам, то проще.
Одна из двух "сложных" формул:
=ЕСЛИ(G1="";"";ЕСЛИ(G1=--ПСТР($A1;ПОИСК("-";$A1)+1;5);"";G1+1))
 
Johny, и как мне ее себе добавить тогда))) И будет ли соблюдаться при этом условие, которое я описала в сообщении выше?
 
vikttur, как всегда кратко эт мы легких путей не ищем в доп к своему примеру в F1 сборка
Код
=ПОДСТАВИТЬ(СЦЕПИТЬ(G1;",";H1;",";I1;",";J1;",";K1;",";L1;",";M1;",";N1;",";O1;",";P1;",";Q1;",";R1;",";S1;",";T1;",";U1;",");",,";"") 
Лень двигатель прогресса, доказано!!!
 
Цитата
Круто! А что именно мне менять под себя?
Ничего там менять не получится. Это заготовка.
Я показал только лишь формирование виртуального массива номеров.это для тех, кто захочет поупражняться.
 
vikttur, Вроде получилось! спасибо. Но все та же проблема... Он как бы должен определять цифры через тире (40-45) (в этом случае формула срабатывает) или нет 47,48 (в этом случае я делаю по ячейкам, как мне показали в предыдущей теме)
 
В начальном сообщении Вы об этом не говорили. А интерес уже убежал...
Делайте проверку на наличие тире или запятой.
 
vikttur, получилось вот так:
Код
=ЕСЛИ(ПОИСК("-";A12;1);--ЛЕВБ(A12;ПОИСК("-";A12)-1);"") 
с числами через тире работает отлично, но не выдает "" при ошибке... просто ЗНАЧ. Пробовала вместо "" поставить
Код
 =СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(","&$A12;",";ПОВТОР(" ";50));СТОЛБЕЦ(D12)*50;50))
Ничего не выходит... не пойму почему выдает ошибку в значении...

И можете, объяснить пожалуйста, зачем в Вашей предложенной формуле перед ЛЕВБ стоит "--"?
Изменено: Honey - 10.02.2015 17:44:47
 
бинарное отрицание. преобразование в число. Подробнее в поиске, через день спрашивают.
Об ошибке - покажите. Быстрее понять на примере.
 
Просто у меня что с -- что без работает одинаково... только если в первом случае выравнивание по правому краю, то без -- по левому краю...)))
Изменено: Honey - 10.02.2015 18:11:03
 
Ошибка, потому что пытаетесь найти то, чего нет.
Код
=--ЛЕВБ(A1;МИН(ПОИСК({"-";","};A1&"-,"))-1)
=ЕСЛИ(G1="";"";ЕСЛИ(G1=--ПСТР($A1;МАКС(ПОИСК("-";ПОДСТАВИТЬ($A1;",";"-";2)))+1;5);"";G1+1))
Если возможно наличие НЕ двух запятых, нужно немного усложнить.
 
Цитата
Honey пишет: Не очень я люблю макросы.. не понимаю их.
А формулы, стало быть, понимаете. Тогда почему столько вопросов по готовым формулам? ))
 
Ещё один вариант.

Код
=IF(--MID($A1;SEARCH("-";$A1)+1;222)-(--LEFT($A1;SEARCH("-";$A1)-1)+COLUMN(A:A)-1)>=0;--LEFT($A1;SEARCH("-";$A1)-1)+COLUMN(A:A)-1;"")
 
Юрий М, совсем не понимаю макросы. С формулами уже имела дело))) Или тут нельзя спрашивать? :D
vikttur,jakim, спасибо попробую в понедельник! =)
 
 
Honey, м.б. поделитесь, зачем Вам преобразовывать 40-45 в 40,41,42,43,44,45 ?
Вар. формулы для яч.H1 =(МАКС($G$2:G2)<--ПСТР($A1;ПОИСК("-";$A1)+1;5))*(G2+1) и протянуть вправо
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
А можно поинтересоваться почему так удобнее через тире, это что диапазон возраста или счетов? Просто хочу понять суть Ваших манипуляций возможно Вам не нужно будет так вводить 41-45. Для решения проблеммы можно найти много способов и очень даже красивых и "эргономичных". Почему эргономичных, чтоб пальцы и мозг работали оперативно :)
 
ВПР. Мне нужно, чтобы если нужно найти значение за число 42, ВПР нашел его в ячейке, где привыкли заполнять 20-45, а не перечислять 20,21,22,23,,,,,45
Страницы: 1 2 След.
Наверх