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

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

Пока идея только приходит, перебирать каждый искомый айтем и сравнивать с каждой ячейкой в первой колонке.
...
Рейтинг: 0 / 0
12.01.2010, 08:14
    #36404556
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
viktor zeleninПока идея только приходит, перебирать каждый искомый айтем и сравнивать с каждой ячейкой в первой колонке.
Меню Формат- Условное_форматирование-Формула.
=(A1=3)+(A1=67)
Не забыть задать формат.
...
Рейтинг: 0 / 0
12.01.2010, 08:15
    #36404559
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
И не забыть закрепить столбец для копирования формулы вправо :)
=($A1=3)+($A1=67)
...
Рейтинг: 0 / 0
12.01.2010, 08:36
    #36404576
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
viktor zeleninПискомых номеров кодов около 400-500.
Невниматален с утра :(
=СЧЕТЕСЛИ(диапазон_кодов;$A1)
...
Рейтинг: 0 / 0
12.01.2010, 11:58
    #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
12.01.2010, 12:05
    #36404917
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
viktor zeleninвообще не вкурил что бы значило ваше решение.
Может, потому что не курю и у нас разные представления? :)
...
Рейтинг: 0 / 0
12.01.2010, 13:27
    #36405156
viktor zelenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
vikttur,

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

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

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

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

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

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

можно ли так сделать?
...
Рейтинг: 0 / 0
12.01.2010, 15:33
    #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
12.01.2010, 15:47
    #36405578
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
Насчёт массива - я пока вижу путь только через выгрузку массива на лист, можно скрытый. Это если условное форматирование использовать.
...
Рейтинг: 0 / 0
12.01.2010, 16:32
    #36405714
vikttur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
Так если кодом - зачем тогда УФ? Для лишней загрузки файла?
...
Рейтинг: 0 / 0
12.01.2010, 16:43
    #36405750
viktor zelenin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
пацаны, мне нужно: кодом открыть файл экселя, закрасить нужные мне строки из диапазона и закрыть файл.
файлов целая гора, я не смогу каждый вручную открывать и вставлять диапазон, а потом применять УФ.
мне надо както кодом пробежаться по строкам, проверить значение, и если есть в значение в диапазоне, то закрасить строку.

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

I Have Nine Lives You Have One Only
THINK!
...
Рейтинг: 0 / 0
13.01.2010, 10:44
    #36406882
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна идея раскрашивания строк по найденным значениям.
Если применять УФ с диапазоном в стороннем файле, то если позже файл будет смотреть другой человек (а иначе зачем проходиться по всем файлам сейчас, это можно делать в рабочем порядке при необходимости), у него ничего не закрасится... имхо
...
Рейтинг: 0 / 0
16.01.2010, 21:39
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Нужна идея раскрашивания строк по найденным значениям. / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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