Страницы: 1
RSS
Редактирование диапазона чисел, Добавление или удаление из готового диапазона чисел новых чисел и, таким образом, формирование новых диапазонов
 
Здравствуйте, уважаемые знатоки Экселя! Я уже получила помощь на этом сайте (спасибо большое!), поэтому осмелюсь попросить подсказки ещё в одном вопросе. К сожалению, не нашла данную тему, хотя очень долго проверяла схожие темы...

На работе я работаю с конкретными кейсами, которые пронумерованы, то есть список кейсов для меня выражены в диапазонах, например, кейс 7229, далее с 8059 до 8077 и так далее. Но каждый раз добавляются или удаляются новые номера. Например, если удален номер 8069 и добавлен номер 8078, то диапазон моих кейсов изменится на:
7229
8059-8068
8069-8077
8078
Пожалуйста, подскажите, возможно ли облегчить мою работу? На текущий момент у меня около 300 диапазонов, включая отдельные номера (например, 7229, см. выше). Сами списки для добавления и удаления номеров очень внушительные. Чтобы  не перебирать и не  формировать каждый раз вручную новые диапазоны, возможно ли воспользоваться формулами?
Исходные
диапазоны
удалить добавить Новые диапазоны (результат удаления и  добавления новых чисел)
7229 8069 8078 7229
8059-8077 9057-10200 8059-8068
9057-10200 11300 8069-8077
11300 8078
14559 14559
15600 15600
Огромное спасибо за любой ответ или комментарий. Как доберусь до компьютера, сразу отправлю файл (на телефоне раньше никогда не создавала файл Эксель)..  
 
Извините, нашла у себя ошибки при формировании новых диапазонов. Ошибки исправлены в файле, который прикрепляю. Д
 
Ну смотрите сами. У вас есть забитые руками данные, формулы менять их не могут, могут только сделать что-то расчетное и преобразованное. Гипотетически  это преобразованное уже просто значениями , но уже руками, можно перенести в исходные и так каждый раз, но сам расчет формулами не прост.
Даже если говорить о макросе, то нужен понятный интерфейс в котором делаются указания что меняем, при этом не думаю что замена пакетом - это хорошая идея, то есть нужно свести к простейшим разовым операциям.
1 удалить диапазон (это может быть один или несколько непрерывных кейсов)
2 добавить диапазон (это может быть один или несколько непрерывных)

Далее макрос должен проанализировать и изменить, при этом следует учесть что ошибка будет дорого стоить, удалили диапазон от 1 до 100000 случайно - нет больше никаких диапазонов. То есть нужно предусмотреть возврат на шаг.

Вааще я б наверно свел это к протоколу  изменений и по нему каждый раз бы формировал бы список типа

7229 +
8059-8077 +
9057-10200 +
11300 +
14559 +
15600 +
8069 -
9057-10200 -
11300 -
8078 +

при этом последовательность нужна для корректного результата.
Изменено: БМВ - 12.01.2025 09:47:09
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо Вам за подробный ответ! Вы уже не раз меня поддерживаете, за что я очень благодарна. Действительно, задача не из лёгких. Видимо, лучше все менять вручную. Пока изучала эту тему, многое интересное узнала на планете Эксель при поиске тем. Поэтому время не потеряно даром. Буду новые знания использовать в работе))) Успехов Вам и процветания сайту!  
 
Lena77, я по примеру не понял в деталях задачу, но думаю вполне можно делать макорсом, например если
1. есть список диапазонов
2  есть значения или диапазоны которые нужно удалить, или добавить
то можно в цикле перебрать всё что есть
затем это множество дополнить или наоборот изменениями
затем выгрузить новый результат

P.S. ну и конечно бекап - это святое ))

Добавил файл. Пока сырое, но рабочее. Чуть на костылях, потому что собрал из того что было, времени мало...
Изменено: Hugo - 12.01.2025 13:03:40 (Добавил файл)
 
Пока такой вариант
pq
Изменено: sotnikov - 12.01.2025 13:32:37
 
Hugo, спасибо за отзыв. Да, Вы верно поняли задачу: при наличии определённых диапазонов требуется автоматически добавить или удалить новые значения. К сожалению, в прикреплённом файле не смогла найти никаких отличий от моего файла...попробую позже открыть на компьютере, может, дело в этом.. С Новогодними праздниками Вас, успехов и удачи!  
Изменено: Lena77 - 12.01.2025 17:37:21
 
sotnikov, большое спасибо Вам за макрос. Никогда ими не пользовалась, но в этот раз придётся разобраться и применить. С Новым годом, счастья Вам!  
 
Lena77,  в файле нужно нажать синюю кнопку, и макрос выгрузит результат рядом с показанным.
Для работы уже в боевых условиях нужно только доработать определение диапазонов с данными.
Как вариант - исходные данные выделять мышью, а добавленное-удалённое писать в отдельные диапазоны отдельного листа, чтоб код их легко мог взять.
Готовый результат можно выгружать например в новую созданную книгу, откуда затем скопипастите куда угодно.

Хотя вот глянул вариант PQ - вполне рабочее решение.
Три копипаста исходных данных, и затем забрать результат. Только работает чуть дольше макроса.
Изменено: Hugo - 12.01.2025 18:16:21
 
Hugo, все получилось. При открытии на компьютере файла при нажатии синей кнопки, как Вы и написали, появились результаты. Благодарю за подробные объяснения. Обязательно изучу все предложенные варианты. Спасибо!)  
 
Lena77, ещё раз уточню - там сейчас в коде явно прописаны диапазоны с данными - что где брать и куда выгружать результат.
Эту часть нужно сделать универсальной, соответственно рабочей задаче. Один из вариантов я выше написал.
Ну и по оптимизации - для использования с большим количеством данных нужно доработать функцию CompressSequence:
1. поменять чтоб работала с массивом - избавит от промежуточного перекладывания ключей из словаря в коллекцию
2. вывод делать сразу в двумерный массив, а не в строку которую затем нужно разбить в массив для выгрузки на лист.
Изменено: Hugo - 12.01.2025 21:02:51
 
Hugo, спасибо за пояснения и поддержку!  
 
Lena77, вот чуть доработал - можно добавлять данные в эти столбцы, но без пустых строк. Всё что после пустой строки не обработается.
И так же результат - удалится перед выводом новых данных только что что записано сплошной областью.
 
Hugo, признательна за Вашу отзывчивость и поддержку! Благодарю!  
Страницы: 1
Наверх