powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна идея раскрашивания строк по найденным значениям.
16 сообщений из 16, страница 1 из 1
Нужна идея раскрашивания строк по найденным значениям.
    #36404492
viktor zelenin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Есть Лист, в нём две колонки:
Код: plaintext
1.
2.
3.
4.
5.
Код, Название
и сами данные:
3, Табуретка
91, Стол
67, Стул
4, Кровать

Задача такая, у меня есть номера кодов, допустим, 3 и 67, нужно найти в первой колонке значение 3 и закрасить эту строку в красный цвет, потом найти следущее значение - 67, и тоже закрасить. Посоветуйте с идеей, как реализовать. Всего записей в Листе около 1000, искомых номеров кодов около 400-500.

Пока идея только приходит, перебирать каждый искомый айтем и сравнивать с каждой ячейкой в первой колонке.
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36404556
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viktor zeleninПока идея только приходит, перебирать каждый искомый айтем и сравнивать с каждой ячейкой в первой колонке.
Меню Формат- Условное_форматирование-Формула.
=(A1=3)+(A1=67)
Не забыть задать формат.
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36404559
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не забыть закрепить столбец для копирования формулы вправо :)
=($A1=3)+($A1=67)
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36404576
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viktor zeleninПискомых номеров кодов около 400-500.
Невниматален с утра :(
=СЧЕТЕСЛИ(диапазон_кодов;$A1)
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36404899
viktor zelenin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikttur,

прошу прощения, но вообще не вкурил что бы значило ваше решение.
попробовал просто выполнить в ексел с "СЧЕТЕСЛИ", выдало в результат 0.

вчера допетрил такой алгоритм:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    Dim i               As Integer
    Dim arrRel( 1 )       As String
    Dim objExcel        As Object
    Dim objWorkbook     As Object
    Dim objRange        As Object
    Dim objCell         As Object
    Dim objWorksheet    As Object
    
    arrRel( 0 ) = "3"
    arrRel( 1 ) = "67"
    
    Set objExcel = CreateObject("Excel.Application")
    'objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Open("c:\Test\1.xls")
    Set objWorksheet = objWorkbook.Worksheets( 1 )
    
    Set objRange = objWorksheet.UsedRange.Columns( 1 ).Cells

    For Each objCell In objRange
        For i =  0  To UBound(arrRel)
            If Val(objCell.Text) = Val(arrRel( 0 , i)) Then
                objWorksheet.Rows(objCell.Rows.Row).Interior.ColorIndex =  33 
                Exit For
            End If
        Next
    Next
    
    
    objExcel.Visible = True
    Set objExcel = Nothing
    Set objWorkbook = Nothing
    Set objRange = Nothing
    Set objCell = Nothing
    Set objWorksheet = Nothing


но он довольно тормозной, а если в массиве 300 значений, то для книги в 1000 записей отнимает несколько минут. это очень долго. не представляю что будет, если записей будет несколько тысяч.

в каком месте тут могут быть тормоза?
или подскажите, что у вас за решение было?
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36404917
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viktor zeleninвообще не вкурил что бы значило ваше решение.
Может, потому что не курю и у нас разные представления? :)
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405156
viktor zelenin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vikttur,

странно, я вообще не пойму как эта тема у вас работает.
но работает! цифры менял, строчка подсвечивается.

а как это сделано? я так и не разобрался, где вшита эта формула? (офис 2007)
потому что даже цвет нельзя поменять этим строкам.

и как применить эту штуку, если я открываю файл через свою программу-клиента, и искомый диапазон у меня в массиве?
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405194
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
эта формула вшита в "Условное форматирование"

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405354
viktor zelenin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot,

ага, понял. нашёл. спасибо.

народ, а помогите вызвать это форматирование из кода.
и чтобы диапазон не ячейками указать, а динамическим массивом.

можно ли так сделать?
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405544
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Макрос записать не пробовали?
Код: plaintext
1.
2.
3.
4.
5.
Sub tt()
    Cells( 18 ,  1 ).FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=COUNTIF($J$3:$J$6;$A18)"
    Selection.FormatConditions( 1 ).Interior.ColorIndex =  3 
End Sub
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405578
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насчёт массива - я пока вижу путь только через выгрузку массива на лист, можно скрытый. Это если условное форматирование использовать.
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405714
Фотография vikttur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так если кодом - зачем тогда УФ? Для лишней загрузки файла?
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36405750
viktor zelenin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пацаны, мне нужно: кодом открыть файл экселя, закрасить нужные мне строки из диапазона и закрыть файл.
файлов целая гора, я не смогу каждый вручную открывать и вставлять диапазон, а потом применять УФ.
мне надо както кодом пробежаться по строкам, проверить значение, и если есть в значение в диапазоне, то закрасить строку.

мой код выше приведённый работает, но слишком медленно, может я чего то не учёл или есть способ быстрее пройтись и обработать строки файла?
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36406752
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя не смогу каждый вручную открывать и вставлять диапазон, а потом применять УФ
и не надо.
можно попробовать сделать так: в шаблоне создать и макрос и именованный диапозон, в котором и будут хранится Ваши критерии. При открытии файла будут в поле действия и макрос и критерии
Попробуйте

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36406882
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если применять УФ с диапазоном в стороннем файле, то если позже файл будет смотреть другой человек (а иначе зачем проходиться по всем файлам сейчас, это можно делать в рабочем порядке при необходимости), у него ничего не закрасится... имхо
...
Рейтинг: 0 / 0
Нужна идея раскрашивания строк по найденным значениям.
    #36414082
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
viktor zeleninмой код выше приведённый работает, но слишком медленно, может я чего то не учёл или есть способ быстрее пройтись и обработать строки файла?

Я кое-что добавил и изменил, исправил ещё одну ошибку, попробуй так, сам я не тестировал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
    Dim i               As Integer
    Dim arrRel( 1 )       As String
    Dim objExcel        As Object
    Dim objWorkbook     As Object
    Dim objRange        As Object
    Dim objCell         As Object
    Dim objWorksheet    As Object
    Dim arrRelUbound As Integer
    
    arrRel( 0 ) = "3"
    arrRel( 1 ) = "67"
    
    arrRelUbound = UBound(arrRel)
    
    Set objExcel = CreateObject("Excel.Application")
    'objExcel.Visible = True
    Set objWorkbook = objExcel.Workbooks.Open("c:\Test\1.xls")
    Set objWorksheet = objWorkbook.Worksheets( 1 )
    
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set objRange = objWorksheet.UsedRange.Columns( 1 ).Cells

    For Each objCell In objRange
        For i =  0  To arrRelUbound
            If Val(objCell.Text) = Val(arrRel(i)) Then
                objWorksheet.Rows(objCell.Rows.Row).Interior.ColorIndex =  33 
                Exit For
            End If
        Next
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    objExcel.Visible = True
    Set objExcel = Nothing
    Set objWorkbook = Nothing
    Set objRange = Nothing
    Set objCell = Nothing
    Set objWorksheet = Nothing
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна идея раскрашивания строк по найденным значениям.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]