Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос поиска значения в массиве - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос поиска значения в массиве (Макросы Sub)
Макрос поиска значения в массиве
Diana Дата: Четверг, 19.09.2013, 09:45 | Сообщение № 1
Группа: Гости
Добрый день!
Есть массив данных на одном листе (3 столбца - RAWDATA) и массив данных на другом листе (1 столбец - LIST).
Берем значение в первой ячейке на листе LIST и ищем его на листе RAWDATA, если находим - то красим зеленым, нет - красным и т.д.
Написала код, но он отрабатывает только по первой ячейке, помогите, пожалуйста, разобраться.

[vba]
Код
Dim r As Range
Dim l As Range

Set r = ThisWorkbook.Sheets("RawData").UsedRange
Set l = ThisWorkbook.Sheets("LIST").UsedRange

For j = 1 To r.Rows.Count
For i = 1 To l.Rows.Count
If l.Cells(i, 1).Value = r.Cells(j, 1).Value Then
l.Cells(i, 1).Interior.Color = RGB(190, 245, 116)
Else: l(i, 1).Cells.Interior.Color = RGB(227, 38, 54)
End If
Next i
Next j
[/vba]
 
Ответить
СообщениеДобрый день!
Есть массив данных на одном листе (3 столбца - RAWDATA) и массив данных на другом листе (1 столбец - LIST).
Берем значение в первой ячейке на листе LIST и ищем его на листе RAWDATA, если находим - то красим зеленым, нет - красным и т.д.
Написала код, но он отрабатывает только по первой ячейке, помогите, пожалуйста, разобраться.

[vba]
Код
Dim r As Range
Dim l As Range

Set r = ThisWorkbook.Sheets("RawData").UsedRange
Set l = ThisWorkbook.Sheets("LIST").UsedRange

For j = 1 To r.Rows.Count
For i = 1 To l.Rows.Count
If l.Cells(i, 1).Value = r.Cells(j, 1).Value Then
l.Cells(i, 1).Interior.Color = RGB(190, 245, 116)
Else: l(i, 1).Cells.Interior.Color = RGB(227, 38, 54)
End If
Next i
Next j
[/vba]

Автор - Diana
Дата добавления - 19.09.2013 в 09:45
KuklP Дата: Четверг, 19.09.2013, 10:05 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Diana, зарегистрируйтесь и приложите файл-пример. Лениво рисовать его за Вас, чтоб помочь Вам же.
Берем значение в первой ячейке на листе LIST и ищем его на листе RAWDATA, если находим - то красим зеленым, нет - красным и т.д.
Красим где? Судя по цитате, надо на листе RAWDATA, а в макросе у Вас на листе LIST.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Четверг, 19.09.2013, 10:08
 
Ответить
СообщениеDiana, зарегистрируйтесь и приложите файл-пример. Лениво рисовать его за Вас, чтоб помочь Вам же.
Берем значение в первой ячейке на листе LIST и ищем его на листе RAWDATA, если находим - то красим зеленым, нет - красным и т.д.
Красим где? Судя по цитате, надо на листе RAWDATA, а в макросе у Вас на листе LIST.

Автор - KuklP
Дата добавления - 19.09.2013 в 10:05
Diana Дата: Четверг, 19.09.2013, 10:12 | Сообщение № 3
Группа: Гости
Надо на листе LIST:
1) Берем первую ячейку на листе LIST и ищем есть ли такое значение на листе RAWDATA, если нет, то красим первую ячейку в красный, если находим, то в зеленый.
2) Берем вторую ячейку на листе LIST..........и т.д.
 
Ответить
СообщениеНадо на листе LIST:
1) Берем первую ячейку на листе LIST и ищем есть ли такое значение на листе RAWDATA, если нет, то красим первую ячейку в красный, если находим, то в зеленый.
2) Берем вторую ячейку на листе LIST..........и т.д.

Автор - Diana
Дата добавления - 19.09.2013 в 10:12
Diana987 Дата: Четверг, 19.09.2013, 10:15 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, надо на листе LIST:
1) Берем первую ячейку на листе LIST и ищем есть ли такое значение на листе RAWDATA, если нет, то красим первую ячейку в красный, если находим, то в зеленый.
2) Берем вторую ячейку на листе LIST..........и т.д.
(извиняюсь за повтор)
 
Ответить
СообщениеKuklP, надо на листе LIST:
1) Берем первую ячейку на листе LIST и ищем есть ли такое значение на листе RAWDATA, если нет, то красим первую ячейку в красный, если находим, то в зеленый.
2) Берем вторую ячейку на листе LIST..........и т.д.
(извиняюсь за повтор)

Автор - Diana987
Дата добавления - 19.09.2013 в 10:15
KuklP Дата: Четверг, 19.09.2013, 10:20 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
По-вашему это файл-пример? И я не спрашивал, где берем. Красим ячейку в каком листе? Одним словом можете ответить? И жду файл.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПо-вашему это файл-пример? И я не спрашивал, где берем. Красим ячейку в каком листе? Одним словом можете ответить? И жду файл.

Автор - KuklP
Дата добавления - 19.09.2013 в 10:20
Diana987 Дата: Четверг, 19.09.2013, 10:29 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, извините, не увидела сообщения до цитаты. Красим на листе LIST.

http://www.fayloobmennik.net/3198703

Файл вроде прикрепила, но не вижу.


Сообщение отредактировал Diana987 - Четверг, 19.09.2013, 10:32
 
Ответить
СообщениеKuklP, извините, не увидела сообщения до цитаты. Красим на листе LIST.

http://www.fayloobmennik.net/3198703

Файл вроде прикрепила, но не вижу.

Автор - Diana987
Дата добавления - 19.09.2013 в 10:29
KuklP Дата: Четверг, 19.09.2013, 10:32 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Ок. С этим разобрались. Файл будет? Или подождем, пока модеры закроют тему за нарушение Правил, п.3?


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеОк. С этим разобрались. Файл будет? Или подождем, пока модеры закроют тему за нарушение Правил, п.3?

Автор - KuklP
Дата добавления - 19.09.2013 в 10:32
Hugo Дата: Четверг, 19.09.2013, 10:42 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Словари-массивы нужны в общем случае... особенно если данных много.
Массив в котором ищем циклом (одним) заносим в словарь, массив который проверяем циклом (одним) проверяем по словарю.
Ну а покраску можно организовать разными способами, в зависимости от количества данных. Если не спешим - можно сразу и красить по одной ячейке, это просто. Но долго.

Файл не смотрел - с работы туда ходу нет.

Да, по примеру - поудаляйте всё лишнее и разместите тут на форуме, если файл больше 100к. И не забывайте, что ещё есть архиваторы.
Если в рабочем файле десятки тысяч строк - это не лишне упомянуть в описании задачи, будет влиять на алгоритм решения задачи.

Если файл не появится - придётся тему закрыть...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСловари-массивы нужны в общем случае... особенно если данных много.
Массив в котором ищем циклом (одним) заносим в словарь, массив который проверяем циклом (одним) проверяем по словарю.
Ну а покраску можно организовать разными способами, в зависимости от количества данных. Если не спешим - можно сразу и красить по одной ячейке, это просто. Но долго.

Файл не смотрел - с работы туда ходу нет.

Да, по примеру - поудаляйте всё лишнее и разместите тут на форуме, если файл больше 100к. И не забывайте, что ещё есть архиваторы.
Если в рабочем файле десятки тысяч строк - это не лишне упомянуть в описании задачи, будет влиять на алгоритм решения задачи.

Если файл не появится - придётся тему закрыть...

Автор - Hugo
Дата добавления - 19.09.2013 в 10:42
Diana987 Дата: Четверг, 19.09.2013, 10:43 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, вроде прикрепила
К сообщению приложен файл: 8085524.xls (90.5 Kb)
 
Ответить
СообщениеKuklP, вроде прикрепила

Автор - Diana987
Дата добавления - 19.09.2013 в 10:43
KuklP Дата: Четверг, 19.09.2013, 10:45 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
У меня на Ваш файлообменник антивирус благим матом орет.
[vba]
Код
Public Sub www()
     Dim r As Range
     Dim l As Range, i&, j&
     Set r = ThisWorkbook.Sheets("RawData").UsedRange
     Set l = ThisWorkbook.Sheets("LIST").UsedRange
     For j = 2 To r.Rows.Count
         For i = 1 To l.Rows.Count
             If l.Cells(i, 1).Value = CLng(r.Cells(j, 1).Value) Then
                 l.Cells(i, 1).Interior.Color = RGB(190, 245, 116)
             Else
                 If l.Cells(i, 1).Interior.Color = xlNone Then
                     l(i, 1).Cells.Interior.Color = RGB(227, 38, 54)
                 End If
             End If
         Next i
     Next j
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеУ меня на Ваш файлообменник антивирус благим матом орет.
[vba]
Код
Public Sub www()
     Dim r As Range
     Dim l As Range, i&, j&
     Set r = ThisWorkbook.Sheets("RawData").UsedRange
     Set l = ThisWorkbook.Sheets("LIST").UsedRange
     For j = 2 To r.Rows.Count
         For i = 1 To l.Rows.Count
             If l.Cells(i, 1).Value = CLng(r.Cells(j, 1).Value) Then
                 l.Cells(i, 1).Interior.Color = RGB(190, 245, 116)
             Else
                 If l.Cells(i, 1).Interior.Color = xlNone Then
                     l(i, 1).Cells.Interior.Color = RGB(227, 38, 54)
                 End If
             End If
         Next i
     Next j
End Sub
[/vba]

Автор - KuklP
Дата добавления - 19.09.2013 в 10:45
Diana987 Дата: Четверг, 19.09.2013, 10:56 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
KuklP, СПАСИБО ОГРОМНОЕ! Пока ищет только по первому столбцу листа RAWDATA, попробую сделать, чтобы искал по другим тоже.
 
Ответить
СообщениеKuklP, СПАСИБО ОГРОМНОЕ! Пока ищет только по первому столбцу листа RAWDATA, попробую сделать, чтобы искал по другим тоже.

Автор - Diana987
Дата добавления - 19.09.2013 в 10:56
Hugo Дата: Четверг, 19.09.2013, 10:58 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3253
Репутация: 707 ±
Замечаний: 0% ±

2019
Смотрю пример.

[vba]
Код
Sub tt()
     Dim a(), el, i&

     With CreateObject("Scripting.Dictionary"): .comparemode = 1
         a = ThisWorkbook.Sheets("RawData").UsedRange.Value
         For Each el In a: .Item(el) = 0&: Next
         a = ThisWorkbook.Sheets("LIST").UsedRange.Columns(1).Value
         For i = 1 To UBound(a)
             If .exists(a(i, 1)) Then
                 ThisWorkbook.Sheets("LIST").Cells(i, 1).Interior.Color = RGB(190, 245, 116)
             Else
                 ThisWorkbook.Sheets("LIST").Cells(i, 1).Interior.Color = RGB(227, 38, 54)
             End If
         Next
     End With

End Sub
[/vba]
Как видите после запуска - usedrange не лучший выбор, кроме того влияют форматы чисел. Но это всё решаемо, если нужно решать. Может не нужно?


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеСмотрю пример.

[vba]
Код
Sub tt()
     Dim a(), el, i&

     With CreateObject("Scripting.Dictionary"): .comparemode = 1
         a = ThisWorkbook.Sheets("RawData").UsedRange.Value
         For Each el In a: .Item(el) = 0&: Next
         a = ThisWorkbook.Sheets("LIST").UsedRange.Columns(1).Value
         For i = 1 To UBound(a)
             If .exists(a(i, 1)) Then
                 ThisWorkbook.Sheets("LIST").Cells(i, 1).Interior.Color = RGB(190, 245, 116)
             Else
                 ThisWorkbook.Sheets("LIST").Cells(i, 1).Interior.Color = RGB(227, 38, 54)
             End If
         Next
     End With

End Sub
[/vba]
Как видите после запуска - usedrange не лучший выбор, кроме того влияют форматы чисел. Но это всё решаемо, если нужно решать. Может не нужно?

Автор - Hugo
Дата добавления - 19.09.2013 в 10:58
KuklP Дата: Четверг, 19.09.2013, 10:59 | Сообщение № 13
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Чего ж сразу не сказали, что надо по всем столбцам? Тогда гораздо лучше использовать метод find. За один проход цикла все раскрасит. Пробуйте, если не получится пишите в тему.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЧего ж сразу не сказали, что надо по всем столбцам? Тогда гораздо лучше использовать метод find. За один проход цикла все раскрасит. Пробуйте, если не получится пишите в тему.

Автор - KuklP
Дата добавления - 19.09.2013 в 10:59
Diana987 Дата: Среда, 25.09.2013, 11:46 | Сообщение № 14
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Все получилось! Всем спасибо :)
 
Ответить
СообщениеВсе получилось! Всем спасибо :)

Автор - Diana987
Дата добавления - 25.09.2013 в 11:46
Катерина Дата: Вторник, 27.01.2015, 23:09 | Сообщение № 15
Группа: Гости
Помогите пожалуйста!!!!!!!!!!!!! мне нужен программный код для для макросов excel.
Дана таблица поставок материалов. вписано уже 6 материалов и их значения и даты поставки.
Мне нужен код для кнопки "Добавить материал" т.е. чтобы я на нее нажала ввела в открывающее окно данные и они отобразились в таблице.

Если не можете так помочь,то подскажите,есть ли в просторах интернета файл,
где перечислены все команды и их значение для программирования в эксель,мне их не найти((
[moder]Читайте Правила форума, создавайте свою тему, прикладывайте файл в Excel
Эта тема закрыта
 
Ответить
СообщениеПомогите пожалуйста!!!!!!!!!!!!! мне нужен программный код для для макросов excel.
Дана таблица поставок материалов. вписано уже 6 материалов и их значения и даты поставки.
Мне нужен код для кнопки "Добавить материал" т.е. чтобы я на нее нажала ввела в открывающее окно данные и они отобразились в таблице.

Если не можете так помочь,то подскажите,есть ли в просторах интернета файл,
где перечислены все команды и их значение для программирования в эксель,мне их не найти((
[moder]Читайте Правила форума, создавайте свою тему, прикладывайте файл в Excel
Эта тема закрыта

Автор - Катерина
Дата добавления - 27.01.2015 в 23:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос поиска значения в массиве (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!