Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразование числовой последовательности - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Преобразование числовой последовательности
benelli Дата: Понедельник, 29.04.2013, 16:45 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Доброго времени, форумчане!

Не особо разбираюсь в экселе, но жизнь "приперла" smile
Помогите решить задачу:

Имеются числовые последовательности, например 1, 2, 3, 4, 5, 20, 22, 26, 27, 28, 29, 30, записанные в одной ячейке. Их надо преобразовать в вид 1-5, 20, 22, 26-30
Такие вариации могут быть абсолтно различными и диапазон чисел от 1 до 999.

Заранее благодраю за помощь!
 
Ответить
СообщениеДоброго времени, форумчане!

Не особо разбираюсь в экселе, но жизнь "приперла" smile
Помогите решить задачу:

Имеются числовые последовательности, например 1, 2, 3, 4, 5, 20, 22, 26, 27, 28, 29, 30, записанные в одной ячейке. Их надо преобразовать в вид 1-5, 20, 22, 26-30
Такие вариации могут быть абсолтно различными и диапазон чисел от 1 до 999.

Заранее благодраю за помощь!

Автор - benelli
Дата добавления - 29.04.2013 в 16:45
Serge_007 Дата: Понедельник, 29.04.2013, 16:46 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Формулами это сделать практически не реально


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеФормулами это сделать практически не реально

Автор - Serge_007
Дата добавления - 29.04.2013 в 16:46
benelli Дата: Понедельник, 29.04.2013, 16:52 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

А других способов тоже нет?
 
Ответить
СообщениеА других способов тоже нет?

Автор - benelli
Дата добавления - 29.04.2013 в 16:52
Serge_007 Дата: Понедельник, 29.04.2013, 17:10 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Макросом.

Максимум что могу предложить прямо сейчас - это Данные - Текст по столбцам (это действо можно заменить формулой), далее см. вложение
К сообщению приложен файл: benelli.xls (23.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеМакросом.

Максимум что могу предложить прямо сейчас - это Данные - Текст по столбцам (это действо можно заменить формулой), далее см. вложение

Автор - Serge_007
Дата добавления - 29.04.2013 в 17:10
benelli Дата: Понедельник, 29.04.2013, 17:33 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Да, спасибо, но длинна может быть большой... и как автоматически разложить 1, 2, 3, ... на столбцы?
 
Ответить
СообщениеДа, спасибо, но длинна может быть большой... и как автоматически разложить 1, 2, 3, ... на столбцы?

Автор - benelli
Дата добавления - 29.04.2013 в 17:33
Serge_007 Дата: Понедельник, 29.04.2013, 17:40 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (benelli)
длинна может быть большой
Если более 256 знаков для Excel версий ранее 2007 или более 16 385 знаков для Excel версий позже 2003, то можно раскладывать текст формулой вертикально



Цитата (benelli)
как автоматически разложить 1, 2, 3, ... на столбцы?
Цитата (Serge_007)
Данные - Текст по столбцам (это действо можно заменить формулой)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (benelli)
длинна может быть большой
Если более 256 знаков для Excel версий ранее 2007 или более 16 385 знаков для Excel версий позже 2003, то можно раскладывать текст формулой вертикально



Цитата (benelli)
как автоматически разложить 1, 2, 3, ... на столбцы?
Цитата (Serge_007)
Данные - Текст по столбцам (это действо можно заменить формулой)

Автор - Serge_007
Дата добавления - 29.04.2013 в 17:40
cherkas Дата: Понедельник, 29.04.2013, 18:32 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 73
Репутация: 2 ±
Замечаний: 0% ±

2003
А у меня вот что получилось, только в розовой и зеленых ячейках немного формулы различаются из за определения начала и конца ряда.
К сообщению приложен файл: _benelli.xls (24.5 Kb)
 
Ответить
СообщениеА у меня вот что получилось, только в розовой и зеленых ячейках немного формулы различаются из за определения начала и конца ряда.

Автор - cherkas
Дата добавления - 29.04.2013 в 18:32
Jhonson Дата: Понедельник, 29.04.2013, 19:29 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 514
Репутация: 169 ±
Замечаний: 0% ±

UDF:
[vba]
Код
Option Explicit
Function разделить(stroka As String)
Dim a() As String, k As String, i As Integer, ch As Integer
If Right(Trim(stroka), 1) <> "," Then stroka = stroka & ","
a = Split(Replace(stroka, " ", ""), ",")
For i = 1 To UBound(a)
     If Val(a(i)) = Val(a(i - 1)) + 1 Then
         ch = ch + 1
     Else
         If ch > 0 Then
             разделить = разделить & a(i - ch - 1) & "-" & a(i - 1) & ","
         Else
             разделить = разделить & a(i - 1) & ","
         End If
         ch = 0
     End If
Next
End Function
[/vba]
К сообщению приложен файл: benelli_jhonson.xls (30.0 Kb)


"Ничто не приносит людям столько неприятностей, как разум."
 
Ответить
СообщениеUDF:
[vba]
Код
Option Explicit
Function разделить(stroka As String)
Dim a() As String, k As String, i As Integer, ch As Integer
If Right(Trim(stroka), 1) <> "," Then stroka = stroka & ","
a = Split(Replace(stroka, " ", ""), ",")
For i = 1 To UBound(a)
     If Val(a(i)) = Val(a(i - 1)) + 1 Then
         ch = ch + 1
     Else
         If ch > 0 Then
             разделить = разделить & a(i - ch - 1) & "-" & a(i - 1) & ","
         Else
             разделить = разделить & a(i - 1) & ","
         End If
         ch = 0
     End If
Next
End Function
[/vba]

Автор - Jhonson
Дата добавления - 29.04.2013 в 19:29
MCH Дата: Понедельник, 29.04.2013, 20:52 | Сообщение № 9
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Ну и мо вариант UDF:
[vba]
Код
Function benelli$(s$)
     Dim x, rng As Range
     For Each x In Split(Replace(s, " ", ""), ",")
         If rng Is Nothing Then
             Set rng = Range("A" & Replace(x, "-", ":A"))
         Else
             Set rng = Union(rng, Range("A" & Replace(x, "-", ":A")))
         End If
     Next x
     benelli = Replace(Replace(Replace(rng.Address(0, 0), "A", ""), ":", "-"), ",", ", ")
End Function
[/vba]

Данные могут быть не сортированы, можно в исходном значении использовать "-"
например из "1-3, 4-5, 20, 22, 30, 26, 27-29" получится "1-5, 20, 22, 26-30"

Ограничения: нужно использовать только натуральные числа (положительные, целые числа), максимальное число для Ex2003 - 65536
К сообщению приложен файл: 8434850.xls (24.0 Kb)


Сообщение отредактировал MCH - Понедельник, 29.04.2013, 20:56
 
Ответить
СообщениеНу и мо вариант UDF:
[vba]
Код
Function benelli$(s$)
     Dim x, rng As Range
     For Each x In Split(Replace(s, " ", ""), ",")
         If rng Is Nothing Then
             Set rng = Range("A" & Replace(x, "-", ":A"))
         Else
             Set rng = Union(rng, Range("A" & Replace(x, "-", ":A")))
         End If
     Next x
     benelli = Replace(Replace(Replace(rng.Address(0, 0), "A", ""), ":", "-"), ",", ", ")
End Function
[/vba]

Данные могут быть не сортированы, можно в исходном значении использовать "-"
например из "1-3, 4-5, 20, 22, 30, 26, 27-29" получится "1-5, 20, 22, 26-30"

Ограничения: нужно использовать только натуральные числа (положительные, целые числа), максимальное число для Ex2003 - 65536

Автор - MCH
Дата добавления - 29.04.2013 в 20:52
benelli Дата: Вторник, 30.04.2013, 10:17 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Огромное при-огромное СПАСИБО всем Вам!
Фанкции помогли и работают как надо, что и требовалось сделать. Я так рад! smile
Написал бы крупным жирным шрифтом "спасибо" но боюсь удалят такое сообщение!
 
Ответить
СообщениеОгромное при-огромное СПАСИБО всем Вам!
Фанкции помогли и работают как надо, что и требовалось сделать. Я так рад! smile
Написал бы крупным жирным шрифтом "спасибо" но боюсь удалят такое сообщение!

Автор - benelli
Дата добавления - 30.04.2013 в 10:17
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!