| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать возрастающий список чисел с разбиением на диапазоны?

Как создать возрастающий список чисел с разбиением на диапазоны?

Ответ
Поиск в этой теме
Непрочитано 10.07.2018, 22:17 #1
Как создать возрастающий список чисел с разбиением на диапазоны?
bartus
 
Регистрация: 06.03.2011
Сообщений: 232

Задача примитивная. Есть в Excel строка с числовыми ячейками, упорядоченными по возрастанию, к примеру:

1 3 6 7 8 48 49 50 88

Одно число - одна ячейка.
В итоге нужно сформировать из этой последовательности список, который формирует диапазоны этих самых чисел, на выходе должно получиться так:

1, 3, 6-8, 48-50, 88

Можно ли реализовать это, например, в Excel? А где-то еще?
Просмотров: 4988
 
Непрочитано 10.07.2018, 22:22
#2
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


ну в эксель и без программирования (командой "=сцепить()" )
можно с программированием, запись (добавление) значения ячейки последовательно в строку...
можно где-то еще
v.psk вне форума  
 
Автор темы   Непрочитано 10.07.2018, 22:39
#3
bartus


 
Регистрация: 06.03.2011
Сообщений: 232


Спасибо! Функция СЦЕПИТЬ работает без создания интервалов, а как их получить?
bartus вне форума  
 
Непрочитано 10.07.2018, 23:28
#4
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


Через ";" добавить "-"

----- добавлено через 54 сек. -----
Текст нужно указать именно в кавычках, разделитель -";"

----- добавлено через ~2 мин. -----
.... (А1;" - ";А2)
v.psk вне форума  
 
Непрочитано 10.07.2018, 23:30
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,001


и как СЦЕПИТЬ выявит непрерывные последовательности чисел?
Сергей812 вне форума  
 
Непрочитано 10.07.2018, 23:50
#6
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


Сергей812, ну я не знаю что тс хочет... Вроде функция устраивает, требуется ятп собрать данные в диапазон.
Можно и большой массив сцепить....
v.psk вне форума  
 
Непрочитано 11.07.2018, 00:17
#7
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,001


Цитата:
Сообщение от v.psk Посмотреть сообщение
Вроде функция устраивает,
нет, не устраивает, так как
Цитата:
Сообщение от bartus Посмотреть сообщение
СЦЕПИТЬ работает без создания интервалов, а как их получить?
т.е. он хочет получить список чисел, где подряд идущие значения заменены на их интервал. И как обычно, шифруются по полной о назначении сего действа)
Сергей812 вне форума  
 
Непрочитано 11.07.2018, 00:41
1 | #8
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,971


Цитата:
Сообщение от bartus Посмотреть сообщение
1, 3, 6-8, 48-50, 88

Можно ли реализовать это, например, в Excel? А где-то еще?
Если без программирования, то можно так: https://docs.google.com/spreadsheets...it?usp=sharing

Последний раз редактировалось SetQ, 11.07.2018 в 00:48.
SetQ вне форума  
 
Непрочитано 11.07.2018, 12:24
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,001


а с программированием - просто анализируйте в цикле следующий элемент за текущим: если следующий элемент отличается от текущего на единицу - значит это диапазон и его нужно обработать во вложенном цикле, пока следующий элемент не окажется больше чем на единицу.
Сергей812 вне форума  
 
Непрочитано 11.07.2018, 14:11
#10
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


да не нужно там программирование, Excel вполне справляется штатными средствами (в 2016 Excel-е это сделать проще, но не принципиально)
Boxa вне форума  
 
Непрочитано 11.07.2018, 16:42
#11
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,971


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а с программированием - просто анализируйте в цикле следующий элемент за текущим: если следующий элемент отличается от текущего на единицу - значит это диапазон и его нужно обработать во вложенном цикле, пока следующий элемент не окажется больше чем на единицу.
Можно без вложенного цикла всё в одном сделать, но с дополнительным вложением условия.

Цитата:
Сообщение от Boxa Посмотреть сообщение
да не нужно там программирование, Excel вполне справляется штатными средствами (в 2016 Excel-е это сделать проще, но не принципиально)
А что за средства?
SetQ вне форума  
 
Непрочитано 11.07.2018, 16:49
#12
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,001


Цитата:
Сообщение от SetQ Посмотреть сообщение
Можно без вложенного цикла всё в одном сделать, но с дополнительным вложением условия.
вложенный цикл лишь для поиска конца диапазона, причем оба цикла работают с одной и той же переменной внешнего цикла.

----- добавлено через ~2 мин. -----
Пускай ТС очертит область применения задачи.. если это вообще не студенческая работа.
Сергей812 вне форума  
 
Непрочитано 11.07.2018, 17:14
#13
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от SetQ Посмотреть сообщение
А что за средства?
Если говорить по 2016 и выше, то функции ЕСЛИ и ОБЪЕДИНИТЬ, более чем достаточно. =о)
Boxa вне форума  
 
Непрочитано 11.07.2018, 17:43
#14
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,001


Цитата:
Сообщение от Boxa Посмотреть сообщение
ОБЪЕДИНИТЬ
в 2016 нет, только в 365
Сергей812 вне форума  
 
Непрочитано 11.07.2018, 18:09
#15
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в 2016 нет, только в 365
Очень может быть, но я вот тут смотрел: ссылка и там маркер версии у функции объединить указан 2016... проверить увы возможности нет. Да и не в этом суть. Работает и ладно.
Boxa вне форума  
 
Непрочитано 11.07.2018, 18:41
1 | #16
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,971


Цитата:
Сообщение от Boxa Посмотреть сообщение
то функции ЕСЛИ и ОБЪЕДИНИТЬ, более чем достаточно
Либо описание функции "объединить" неполное, либо Exel online отличается от 365, либо надо что-то ещё.

Можно редактировать:
https://1drv.ms/x/s!AuONrFa9nau5jXmRIVG4RqqMJBFk
SetQ вне форума  
 
Непрочитано 11.07.2018, 19:41
#17
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от SetQ Посмотреть сообщение
Можно редактировать:
Отредактировал.
Boxa вне форума  
 
Непрочитано 11.07.2018, 20:35
#18
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,971


Цитата:
Сообщение от Boxa Посмотреть сообщение
Отредактировал.
Опять с промежуточными вычислениями в ячейках, а одним выражением в одной ячейке и без программирования?
SetQ вне форума  
 
Непрочитано 11.07.2018, 21:09
#19
v.psk

конструктор
 
Регистрация: 14.08.2014
Псков
Сообщений: 7,096


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
где подряд идущие значения заменены на их интервал.
а это я только сейчас заметил))
Boxa, отличное решение
v.psk вне форума  
 
Непрочитано 11.07.2018, 21:14
#20
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от SetQ Посмотреть сообщение
Опять с промежуточными вычислениями в ячейках, а одним выражением в одной ячейке и без программирования?
Такого условия не было озвучено, можно сократить количество промежуточных вычислений (будет компактнее, но не наглядно), но какой в этом смысл?
Boxa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать возрастающий список чисел с разбиением на диапазоны?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Excel создать дополнительные фильтры или выпадающие списки в столбце и чтобы данные определенной ячейки были связаны с соседними ячейками по горизонтали? ВиталийР Прочее. Программное обеспечение 108 10.12.2016 00:38
Хочу создать свой раскрывающийся список в меню ACAD maxw AutoCAD 10 19.12.2005 06:42