Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2009, 20:55   #1
stasbz
Пользователь
 
Регистрация: 24.05.2009
Сообщений: 16
По умолчанию Выявление нарушения последовательности чисел

Возникла необходимость в следующем макросе:
Столбец A содержит последовательные числа. Эта последовательность начинается с 1 и может заканчиваться 10 или 11 .. 12 .. 17 .. 24 , после чего опять следует 1 и после чего последовательность повторяется. Например: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 12 13 1 2 3 ..... Вместе с тем, каждая из последовательностей (1..10) имеет свой номер в графе B.
Выглядит это так.
A B
1 345
2 345
3 345
1 346
2 346
3 346
.. ...
1 789
2 789
3 789
. 789
7 789
8 789
1 790
. 790
6 790
Необходимо выявить случаи когда последовательность чисел в столбце A нарушается внутри этих подряд идущих рядов 1...10 1....11 1...13 1..., например: 1 2 3 5 6 7 8 9 10 1 2 3 4 5 7 8 9 . В данном случае после 3 пропущена 4, и после 5 пропущена 6.
Число 1 тоже может быть пропущено.
Надо как то обозначить эти места, например заменой числа, после которого пропущено число, символом & или каким то другим способом. это уже не суть важно.

Последний раз редактировалось stasbz; 21.06.2009 в 20:58.
stasbz вне форума Ответить с цитированием
Старый 21.06.2009, 23:40   #2
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

Код:
dim i as integer
i=2 'индекс ВТОРОЙ строки диапазона
with activesheet
do while .cells(i,1)<>empty
if .cells(i,1)-1<>.cells(i-1,1) then .cells(i,1)="&" & .cells(i,1)
i=i+1
loop
NOTE: если в предидущей клетке цифра меньше чем на единицу то текущей клетка дописывается знак & перед числом.
или таким макаром можно воткнуть пустую строку перед ячейкой, значение в которой больше, чем на единицу, значения предидущей(верхней) ячейки.
Код:
dim i as integer
i=2 'индекс ВТОРОЙ строки диапазона
with activesheet
do while .cells(i,1)<>empty
if .cells(i,1)-1<>.cells(i-1,1) then .rows(i & ":" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
i=i+1
loop

Последний раз редактировалось tolikman; 21.06.2009 в 23:49.
tolikman вне форума Ответить с цитированием
Старый 21.06.2009, 23:46   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можно воспользоваться условным форматированием, чтобы подсветить числа, перед которыми имеются пропуски.

В условном форматировании используется формула =И(RC-R[-1]C<>1;RC<>1)

Пример во вложении:
Вложения
Тип файла: rar Книга.rar (2.0 Кб, 36 просмотров)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить k-ую цифру последовательности Фибоначчи и последовательности натуральных чисел. Med Помощь студентам 1 20.03.2009 11:40
обмен чисел последовательности maziLa Паскаль, Turbo Pascal, PascalABC.NET 2 09.12.2008 00:15
Ввод последовательности чисел POPOV Общие вопросы Delphi 5 16.02.2008 22:13
Как из последовательности чисел выделить недостающие Юрій Microsoft Office Excel 2 27.01.2008 21:46
вычисление суммы чисел, кратных 3 из последовательности, состоящей из 10 чисел, заранее заданных Белка Помощь студентам 3 27.10.2007 11:53