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

Вход

Регистрация

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

 

= Мир MS Excel/Массив из диапазона ячеек с условным форматированием - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массив из диапазона ячеек с условным форматированием (Макросы/Sub)
Массив из диапазона ячеек с условным форматированием
iraci Дата: Среда, 08.02.2017, 08:41 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте! Имеется столбец со списком фамилий, в котором применяется условное форматирование (заливка ячеек цветом). Часть ячеек выделена цветом, а в некоторых ячейках заливка отсутствует, эти ячейки необходимо поместить в массив, а затем вывести полученный список в соседний столбец или в любой другой. С VBA имею дело крайне редко, а потому не получается слепить из имеющихся здесь примеров необходимое решение((
Может быть массивы здесь вообще лишние и это можно сделать как-то по-другому?


Сообщение отредактировал iraci - Среда, 08.02.2017, 08:53
 
Ответить
СообщениеЗдравствуйте! Имеется столбец со списком фамилий, в котором применяется условное форматирование (заливка ячеек цветом). Часть ячеек выделена цветом, а в некоторых ячейках заливка отсутствует, эти ячейки необходимо поместить в массив, а затем вывести полученный список в соседний столбец или в любой другой. С VBA имею дело крайне редко, а потому не получается слепить из имеющихся здесь примеров необходимое решение((
Может быть массивы здесь вообще лишние и это можно сделать как-то по-другому?

Автор - iraci
Дата добавления - 08.02.2017 в 08:41
Pelena Дата: Среда, 08.02.2017, 09:10 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Файл с примером помог бы в понимании проблемы


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеФайл с примером помог бы в понимании проблемы

Автор - Pelena
Дата добавления - 08.02.2017 в 09:10
iraci Дата: Среда, 08.02.2017, 09:39 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Если более подробно, то задача такая: имеется два списка людей, которые необходимо сравнить, что делается с помощью условного форматирования по правилам выделения ячеек - ищутся повторяющиеся значения. В файле с примером оно так, как примерно должно выглядеть, то есть в сокращенном варианте, а нужный список сделан вручную. В реальной жизни будет большое количество строк и необходимо автоматизировать выбор нужных фамилий и формирование новых списков.
Заранее спасибо за помощь!
К сообщению приложен файл: 8428375.xlsx (10.0 Kb)
 
Ответить
СообщениеЕсли более подробно, то задача такая: имеется два списка людей, которые необходимо сравнить, что делается с помощью условного форматирования по правилам выделения ячеек - ищутся повторяющиеся значения. В файле с примером оно так, как примерно должно выглядеть, то есть в сокращенном варианте, а нужный список сделан вручную. В реальной жизни будет большое количество строк и необходимо автоматизировать выбор нужных фамилий и формирование новых списков.
Заранее спасибо за помощь!

Автор - iraci
Дата добавления - 08.02.2017 в 09:39
Kamikadze_N Дата: Среда, 08.02.2017, 09:54 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
iraci, всмысле что с чем сравнить? Поясните пожалуйста, не окрашенные ячейки они из какого столбца проверялись? вывести в отдельный столбец неокрашенные ячейки нужно? А как определить какие ячейки будут окрашиваться какие нет?
 
Ответить
Сообщениеiraci, всмысле что с чем сравнить? Поясните пожалуйста, не окрашенные ячейки они из какого столбца проверялись? вывести в отдельный столбец неокрашенные ячейки нужно? А как определить какие ячейки будут окрашиваться какие нет?

Автор - Kamikadze_N
Дата добавления - 08.02.2017 в 09:54
iraci Дата: Среда, 08.02.2017, 10:20 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Да, вывести в отдельный столбец нужно неокрашенные ячейки. Неокрашенные из столбца А - в столбец D, неокрашенные из столбца В - в столбец E. Какие ячейки окрашиваются, а какие нет - это решает условное форматирование, сравнивая списки. Изначально я сравниваю два списка работников, используя условное форматирование. Список в столбце А - это работающие в текущем месяце, в столбце В - в предыдущем. Мне нужно получить списки людей, принятых на работу в текущем месяце и уволенных в предыдущем. То есть получить разницу между двумя списками. Условное форматирование помогает наглядно увидеть разницу, но это лишь полуавтомат. Реальные списки содержат более тысячи записей, поэтому и возникает необходимость автоматом получить списки уволенных и вновь принятых, иначе их придется выуживать, пролистывая все строки и вручную выбирая ячейки с отсутствием заливки. Но это ведь не вариант(( Окрашенные ячейки содержат фамилии, которые есть в обоих списках, а если ячейка не окрашена, то значит этой фамилии в соседнем списке нет. Эти то фамилии меня и интересуют. В результате должны появиться два списка: принятые на работу в текущем месяце (столбец D) и уволенные в предыдущем (столбец E). В примере я вручную просто скопировала содержимое невыделенных ячеек, чтобы было видно, как оно должно получиться. Но такой список конечно должен формироваться автоматом. Заново прилагаю немного измененный файл с примером.
Задача как обычно специфическая, надеюсь с третьей попытки мне удалось описать ее особенности %)
К сообщению приложен файл: 5629920.xlsx (10.0 Kb)


Сообщение отредактировал iraci - Среда, 08.02.2017, 10:53
 
Ответить
СообщениеДа, вывести в отдельный столбец нужно неокрашенные ячейки. Неокрашенные из столбца А - в столбец D, неокрашенные из столбца В - в столбец E. Какие ячейки окрашиваются, а какие нет - это решает условное форматирование, сравнивая списки. Изначально я сравниваю два списка работников, используя условное форматирование. Список в столбце А - это работающие в текущем месяце, в столбце В - в предыдущем. Мне нужно получить списки людей, принятых на работу в текущем месяце и уволенных в предыдущем. То есть получить разницу между двумя списками. Условное форматирование помогает наглядно увидеть разницу, но это лишь полуавтомат. Реальные списки содержат более тысячи записей, поэтому и возникает необходимость автоматом получить списки уволенных и вновь принятых, иначе их придется выуживать, пролистывая все строки и вручную выбирая ячейки с отсутствием заливки. Но это ведь не вариант(( Окрашенные ячейки содержат фамилии, которые есть в обоих списках, а если ячейка не окрашена, то значит этой фамилии в соседнем списке нет. Эти то фамилии меня и интересуют. В результате должны появиться два списка: принятые на работу в текущем месяце (столбец D) и уволенные в предыдущем (столбец E). В примере я вручную просто скопировала содержимое невыделенных ячеек, чтобы было видно, как оно должно получиться. Но такой список конечно должен формироваться автоматом. Заново прилагаю немного измененный файл с примером.
Задача как обычно специфическая, надеюсь с третьей попытки мне удалось описать ее особенности %)

Автор - iraci
Дата добавления - 08.02.2017 в 10:20
Manyasha Дата: Среда, 08.02.2017, 11:15 | Сообщение № 6
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
iraci, здравствуйте, Ваша формула в I1
Цитата
формула не работет для excel 2007((
должна работать в 2007-м, просто она неправильно записана. Попробуйте так:
Код
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$359;НАИМЕНЬШИЙ(ЕСЛИ((СЧЁТЕСЛИ($A$3:$A$340;$B$3:$B$359)=0)*($B$3:$B$359<>"");СТРОКА($B$3:$B$359)-2;"");СТРОКА(A1)));"")


Если хотите именно макросом, то можно так, например:
[vba]
Код
Sub ttt()
    Dim i&, dic1 As Object, dic2 As Object, key
    Set dic1 = CreateObject("scripting.dictionary")
    Set dic2 = CreateObject("scripting.dictionary")
    [d2].Resize([d2].CurrentRegion.Rows.Count, 2).Offset(1).ClearContents
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        dic1(Trim(Cells(i, 1))) = i
    Next i
    For i = 3 To Cells(Rows.Count, 2).End(xlUp).Row
        dic2(Trim(Cells(i, 2))) = i
    Next i
    i = 3
    For Each key In dic1.keys
        If Not dic2.exists(key) Then Cells(i, 4) = key: i = i + 1
    Next key
    i = 3
    For Each key In dic2.keys
        If Not dic1.exists(key) Then Cells(i, 5) = key: i = i + 1
    Next key
End Sub
[/vba]
К сообщению приложен файл: 8428375-1.xlsm (62.3 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеiraci, здравствуйте, Ваша формула в I1
Цитата
формула не работет для excel 2007((
должна работать в 2007-м, просто она неправильно записана. Попробуйте так:
Код
=ЕСЛИОШИБКА(ИНДЕКС($B$3:$B$359;НАИМЕНЬШИЙ(ЕСЛИ((СЧЁТЕСЛИ($A$3:$A$340;$B$3:$B$359)=0)*($B$3:$B$359<>"");СТРОКА($B$3:$B$359)-2;"");СТРОКА(A1)));"")


Если хотите именно макросом, то можно так, например:
[vba]
Код
Sub ttt()
    Dim i&, dic1 As Object, dic2 As Object, key
    Set dic1 = CreateObject("scripting.dictionary")
    Set dic2 = CreateObject("scripting.dictionary")
    [d2].Resize([d2].CurrentRegion.Rows.Count, 2).Offset(1).ClearContents
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
        dic1(Trim(Cells(i, 1))) = i
    Next i
    For i = 3 To Cells(Rows.Count, 2).End(xlUp).Row
        dic2(Trim(Cells(i, 2))) = i
    Next i
    i = 3
    For Each key In dic1.keys
        If Not dic2.exists(key) Then Cells(i, 4) = key: i = i + 1
    Next key
    i = 3
    For Each key In dic2.keys
        If Not dic1.exists(key) Then Cells(i, 5) = key: i = i + 1
    Next key
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 08.02.2017 в 11:15
Kamikadze_N Дата: Среда, 08.02.2017, 11:49 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
iraci, или вот вариант вообще без условного форматирования. С подсветкой принятых и уволеных макросом и формированием списков в соответствующих столбацa
К сообщению приложен файл: 8428375.xlsm (22.9 Kb)


Сообщение отредактировал Kamikadze_N - Среда, 08.02.2017, 11:49
 
Ответить
Сообщениеiraci, или вот вариант вообще без условного форматирования. С подсветкой принятых и уволеных макросом и формированием списков в соответствующих столбацa

Автор - Kamikadze_N
Дата добавления - 08.02.2017 в 11:49
iraci Дата: Среда, 08.02.2017, 12:50 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 19
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Уу, сколько тут переваривать предстоит, большое спасибо всем за ответы. Что будет еще не понятно, поспрашаю))


Сообщение отредактировал iraci - Среда, 08.02.2017, 13:49
 
Ответить
СообщениеУу, сколько тут переваривать предстоит, большое спасибо всем за ответы. Что будет еще не понятно, поспрашаю))

Автор - iraci
Дата добавления - 08.02.2017 в 12:50
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массив из диапазона ячеек с условным форматированием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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