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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2025, 14:55   #1
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию Выделение в табличных строках характерных нулевых и единичных последовательностей

Прошу помочь решить задачу

Выделение в табличных строках характерных нулевых и единичных последовательностей
В каждом крайнем (правом) столбце таблицы принимаются во внимание не нулевые ячейки.
Выделение нулевых последовательностей в строках.
Если правой не нулевой ячейке строки таблицы предшествуют n нулевых ячеек, этим ячейкам предшествуют m ненулевых ячеек, а им опять предшествуют n нулевых ячеек, то такая правая ячейка выделяется цветом.
В примере таблицы (1 -10 строки) таковыми, требующими выделения ячейками столбца O, являются выделенные красным цветом ячейки O1, O7, O8, O10 (остальные выделения розовым цветом в строках не обязательны и сделаны для пояснения).
Когда в этой же таблице появляется очередной столбец P (строки 12-21), то должны выделяться ячейки P16, P17 и P20.

Выделение единичных последовательностей в строках.
Если правой не нулевой ячейке строки таблицы предшествуют i не нулевых ячеек, этим ячейкам предшествуют j нулевых ячеек, а им опять предшествуют i не нулевых ячеек, то такая правая ячейка выделяется цветом.
В примере таблицы (1 -10 строки) таковыми, требующими выделения ячейками столбца O, являются выделенные бирюзовым цветом ячейки O3 и O4 (остальные выделения бледно-зеленым цветом в строках не обязательны и сделаны для пояснения).
Когда в этой же таблице появляется очередной столбец P (строки 12-21), то должны выделяться ячейки P18 и P21.
И так с появлением каждого очередного столбца.
Вложения
Тип файла: xls Пример для форума с равными интервалами.xls (19.0 Кб, 3 просмотров)
Aristarkch вне форума Ответить с цитированием
Старый 15.02.2025, 20:16   #2
сфинкс
Участник клуба
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 1,019
По умолчанию

Даже не скачивая: строки вида 001001

распознает формула вида

=не(a1) *не(a2) *a3 *не(a4) *не(a5) *a6
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 16.02.2025, 03:47   #3
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию

сфинкс,
Ответ не соответствует поставленной задаче.
Aristarkch вне форума Ответить с цитированием
Старый 18.02.2025, 02:55   #4
сфинкс
Участник клуба
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 1,019
По умолчанию

Дано

2 1 1 3 0 1 1 0 0 1 5 1 0 0 3 0
0 0 0 1 1 0 0 0 3 3 0 0 1 1 0 0
1 2 1 1 2 2 1 0 1 2 0 0 1 1 2 0

Результат если формула =не(A1)*не(B1)*не(не(C1))

0 0 0 0 0 0 0 1 0 0 0 0 1 0
0 1 0 0 0 0 1 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0

Результат если формула =не(A1)*не(B1)*C1

0 0 0 0 0 0 0 1 0 0 0 0 3 0
0 1 0 0 0 0 3 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0 0 0 1 0 0 0

Видим: ищет 00x или точно 001
и дальше разукрашивать возможно результаты
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 18.02.2025, 14:41   #5
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию

сфинкс, Вероятно, я не доступно обозначил задачу. Скорее всего, без макроса не обойтись.
Aristarkch вне форума Ответить с цитированием
Старый 18.02.2025, 21:59   #6
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 171
По умолчанию

Aristarkch, так будет правильно макросом?

Код:
Sub Aristarkch_Test()
    Dim n0&, n1&, m&, Rw&, Co&, CoL&
    Dim n0b As Boolean, n1b As Boolean, mb As Boolean
    
    For Rw = 1 To 10    '(1 - 10 строки)

        ' В каждом крайнем (правом) столбце таблицы
        ' принимаются во внимание не нулевые ячейки.
        CoL = Cells(Rw, Columns.Count).End(xlToLeft).Column
        If Cells(Rw, CoL) > 0 Then
            
            ' Если правой не нулевой ячейке строки таблицы ...
            If Cells(Rw, CoL - 1) = 0 Then
                n0b = True: n1b = False: mb = True
                n0 = 0: n1 = 0: m = 0
                For Co = CoL - 1 To 1 Step -1
                    'Cells(Rw, Co).Activate: Stop
                    
                    If Cells(Rw, Co) = 0 Then
                        ' ... предшествуют n нулевых ячеек,
                        If n0b Then: n0 = n0 + 1
                        ' ... а им опять предшествуют n нулевых ячеек,
                        If n1b Then n1 = n1 + 1: mb = False
                    Else
                        ' ... этим ячейкам предшествуют m ненулевых ячеек,
                        If mb Then
                            m = m + 1: n0b = False: n1b = True
                        Else
                            Exit For
                        End If
                    End If
                Next Co
                
                ' то такая правая ячейка выделяется цветом.
                If n0 = n1 Then Cells(Rw, CoL).Interior.Color = vbYellow
            End If
        End If
    Next Rw
End Sub
Elixi вне форума Ответить с цитированием
Старый 19.02.2025, 04:55   #7
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию

Elixi, Скопироавл Ваш код и вставил в "Исходный текст" листа примера. Cтыковки - реакции excel на макрос - не произошло.

Последний раз редактировалось Aristarkch; 19.02.2025 в 09:40.
Aristarkch вне форума Ответить с цитированием
Старый 20.02.2025, 19:02   #8
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию

Может быть созданный Вами макрос не стыкуется с excel 2003?

Последний раз редактировалось Aristarkch; 20.02.2025 в 19:05.
Aristarkch вне форума Ответить с цитированием
Старый 21.02.2025, 22:38   #9
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Aristarkch Посмотреть сообщение
Elixi, Скопироавл Ваш код и вставил в "Исходный текст" листа примера. Cтыковки - реакции excel на макрос - не произошло.
Цитата:
Сообщение от Aristarkch Посмотреть сообщение
Может быть созданный Вами макрос не стыкуется с excel 2003?
Нет у меня Excel 2003, но не вижу почему этот не сложный макрос на нем не смог заработать.
Вся проблема скорее всего вот в этом:

Цитата:
Сообщение от Aristarkch Посмотреть сообщение
В каждом крайнем (правом) столбце таблицы принимаются во внимание не нулевые ячейки.
А у вас там в крайнем (правом) столбце ноли. Проверьте.
Elixi вне форума Ответить с цитированием
Старый 22.02.2025, 03:31   #10
Aristarkch
Пользователь
 
Регистрация: 06.03.2017
Сообщений: 45
По умолчанию

Elixi, Даже если я добавляю к таблицу справа полностью единичный столбец, в нем ничего не выделяется. А должны выделяться ячейки в 5, 6, 7, 9 и 10 строках.

Последний раз редактировалось Aristarkch; 22.02.2025 в 06:51.
Aristarkch вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выделение заданных нулевых особенностей в строках Aristarkch Microsoft Office Excel 1 23.01.2018 01:21
[Assembler] Помощь новичку, В числе Х определить длину самой большой последовательности из единичных разрядов. sweet_dick Помощь студентам 2 01.07.2017 16:25
Помогите . Проблема с поиском последовательностей цифр в строках Slavakin Общие вопросы C/C++ 7 03.11.2013 20:20
Поиск характерных точек на изображении Puhovoi Общие вопросы Delphi 6 06.03.2013 06:33
Матрица.Как записать матрицу составленную из 3 единичных матриц?? Namyola Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2011 16:32