|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
04.10.2014, 12:25 | #1 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 62
|
Запись цифр, которые содержатся в одном столбце через дефис и запятую
Здравствуйте!
Помогите решить задачу посредством макроса в EXCEL 2003. В столбце "A" содержатся названия уровня, в столбце "B" номера. Задача проанализировать эти два столбца и если номера повторяются написать их через дефис, если нарушается непрерывность счета, то через запятую. Результат обработки помещается в столбцы I и J. |
04.10.2014, 13:48 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
через тире записываются 3 и более чисел подряд (2 подряд будут разделены запятыми)
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
04.10.2014, 14:14 | #3 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 62
|
Если цифры будут идти в таком порядке:
А 1 А 2 А 3 А 4 А 5 А 7 получится А 1-5, 7, 7, 28-38, 64-69, 90-109, 156-166, 175-179 |
04.10.2014, 14:50 | #4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
эту строку
Код:
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
04.10.2014, 15:16 | #5 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 62
|
IgorGO, спасибо огромное!
|
04.10.2014, 15:18 | #6 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 62
|
IgorGO, в чем может быть причина, почему функция выдает "-"
Public Function Тире_запятая(Диапазон As Range, Символ) Dim M(), R, T With Диапазон M = Range(.Cells(1, 1), .Cells(Cells(Rows.Count, 1).End(xlUp).Row, 2)) End With For R = 2 To LR If M(R, 1) = Символ Then If Len(Тире_запятая) = 0 Then Тире_запятая = M(R, 2) Else If M(R, 2) <> T + 1 Then Тире_запятая = Тире_запятая & "-" & T & ", " & M(R, 2) End If End If T = M(R, 2) End If Next R Тире_запятая = Тире_запятая & "-" & T End Function |
05.10.2014, 12:20 | #8 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 05.10.2014 в 12:32. |
05.10.2014, 13:39 | #9 |
Пользователь
Регистрация: 07.06.2010
Сообщений: 62
|
IgorGO, последний макрос выдает ошибку type mismatch
Ничего страшного, предыдущий все правильно делает, спасибо за помощь! Последний раз редактировалось Viktorkv; 05.10.2014 в 13:42. |
05.10.2014, 14:04 | #10 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
ошибка наверное в этой строке
Код:
r1 = 1: r2 = 6: c1 = 1: c2 = 9 r1 = 1 а не 2 как было в начальном варианте (стартовая строка ссылается мимо данных) упростил логику на несколько строк и попутно изменилось правило работы: через тире отбображаются любые подряд идущие номера. например: 1 2 5 7 8 9 10 в последнем варианте будет отображено как: 1-2, 5, 7-10 а в предыдущей версии так: 1, 2, 5, 7-10
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 05.10.2014 в 16:25. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Найти все слова-числа, т.е. такие, которые состоят только из цифр. Известно, что количество цифр в каждом числе не более 9 (девяти | vikichocolate | Помощь студентам | 1 | 21.12.2011 00:12 |
Поиск элемента в одном столбце и замена в другом | Volgar | Microsoft Office Excel | 13 | 05.01.2011 19:49 |
Отображение формулы в одном столбце | dyakon88 | Microsoft Office Excel | 6 | 25.11.2010 20:15 |
Как заменить обычний дефис на неразрывный дефис | Jaroslav | Microsoft Office Excel | 2 | 28.05.2010 11:39 |