Добрый день, есть документ - Таблица обученности персонала с большой шапкой с объединением строк. Изменять таблицу нельзя, она наиболее наглядна. Необходимо сделать фильтрацию данных по определенным условиям. Фильтрация обычным фильтром не подходит, ввиду присутствия объединенных ячеек.
Условия задачи– по выделению какой-либо ячейки столбца выполняется фильтрация (скрываются строки не удовлетворяющие условиям) по определенным значениям. Фильтр прописывается один раз и меняться не будет, всего 3 значения фильтра:
- дата меньше сегодняшней (дата <= сегодня)
- дата в промежутке от "сегодня" до "сегодня+14" (сегодня < дата <= (сегодня+14))
- дата в промежутке от "сегодня+14" до "сегодня+30" ((сегодня+14) < дата <= (сегодня +30))
- дата больше "сегодня+30" (дата > (сегодня +30))
Отдельной кнопкой, будет сброс фильтра, т.е. ПОКАЗАТЬ ВСЕ СТРОКИ.
В списке будет произвольно много фамилий, поэтому четкое указание диапазона не подходит, лист книги, также будет иметь произвольное название, поэтому нельзя привязывать макрос к конкретному имени листа.
Добрый день, есть документ - Таблица обученности персонала с большой шапкой с объединением строк. Изменять таблицу нельзя, она наиболее наглядна. Необходимо сделать фильтрацию данных по определенным условиям. Фильтрация обычным фильтром не подходит, ввиду присутствия объединенных ячеек.
Условия задачи– по выделению какой-либо ячейки столбца выполняется фильтрация (скрываются строки не удовлетворяющие условиям) по определенным значениям. Фильтр прописывается один раз и меняться не будет, всего 3 значения фильтра:
- дата меньше сегодняшней (дата <= сегодня)
- дата в промежутке от "сегодня" до "сегодня+14" (сегодня < дата <= (сегодня+14))
- дата в промежутке от "сегодня+14" до "сегодня+30" ((сегодня+14) < дата <= (сегодня +30))
- дата больше "сегодня+30" (дата > (сегодня +30))
Отдельной кнопкой, будет сброс фильтра, т.е. ПОКАЗАТЬ ВСЕ СТРОКИ.
В списке будет произвольно много фамилий, поэтому четкое указание диапазона не подходит, лист книги, также будет иметь произвольное название, поэтому нельзя привязывать макрос к конкретному имени листа.shelesto
Достаточно разбить ячейку ФИО, и будет вам щастье Фильтр по цвету для Excel 2007 и выше прекрасно справится с Вашими запросами
Дело в том, что данное решение не подходит для автоматизации и для людей не знакомых с сортировкой по фильтру сложно будет отсортировать, тем более, что меню сортировки сложное, поэтому нужен именно макрос, но все равно спасибо за совет...
Цитата (M73568)
Достаточно разбить ячейку ФИО, и будет вам щастье Фильтр по цвету для Excel 2007 и выше прекрасно справится с Вашими запросами
Дело в том, что данное решение не подходит для автоматизации и для людей не знакомых с сортировкой по фильтру сложно будет отсортировать, тем более, что меню сортировки сложное, поэтому нужен именно макрос, но все равно спасибо за совет...shelesto
стал проверять, но, к сожалению, всё работает не совем так, как хотелось:
Макрос привязан к столбцу D и только с ним и работет. Нужно, чтобы код страбатывал именно с тем столбцом, в котором в данное время выделена ячейка, а если же код не срабатывает (выдает ошибку), то либо ничего не происходило, либо вылетало окно с сообщением...
AlexM,
стал проверять, но, к сожалению, всё работает не совем так, как хотелось:
Макрос привязан к столбцу D и только с ним и работет. Нужно, чтобы код страбатывал именно с тем столбцом, в котором в данное время выделена ячейка, а если же код не срабатывает (выдает ошибку), то либо ничего не происходило, либо вылетало окно с сообщением...shelesto
Возможно вы файл старый используете. Прикладываю с другим именем В доработанном макросе заменена строка[vba]
Код
Cells(3, 4).End(xlDown).Row
[/vba]на строку [vba]
Код
Cells(3, ActiveCell.Column).End(xlDown).Row
[/vba] Определяется количество данных не в 4 столбце, а том где активная ячейка. В операторах If также 4 (столбец) заменил на ActiveCell.Column - номер столбца с активной ячейкой. Поэтому отбор строк идет по столбцу с активной ячейкой. Возможно там даты не попадают в проверяемые диапазоны.
Возможно вы файл старый используете. Прикладываю с другим именем В доработанном макросе заменена строка[vba]
Код
Cells(3, 4).End(xlDown).Row
[/vba]на строку [vba]
Код
Cells(3, ActiveCell.Column).End(xlDown).Row
[/vba] Определяется количество данных не в 4 столбце, а том где активная ячейка. В операторах If также 4 (столбец) заменил на ActiveCell.Column - номер столбца с активной ячейкой. Поэтому отбор строк идет по столбцу с активной ячейкой. Возможно там даты не попадают в проверяемые диапазоны.AlexM
Получилось, спасибо! Может еще подскажете что прописать в коде, если макрос не находит нужных значений в столбце, он завершался сам (или выводил сообщение об ошибке), не приводя к падению Экселя? Сейчас, если выделить ячейку, в толбце которой отсутсвует дата, то программа зависает.
Получилось, спасибо! Может еще подскажете что прописать в коде, если макрос не находит нужных значений в столбце, он завершался сам (или выводил сообщение об ошибке), не приводя к падению Экселя? Сейчас, если выделить ячейку, в толбце которой отсутсвует дата, то программа зависает.shelesto
Serge_007 - если данный код вставляю после кода макроса перед Sub End, то никакой пользы от этого слова нет, если же в самом начале, то код вобще отказывается работать.
Serge_007 - если данный код вставляю после кода макроса перед Sub End, то никакой пользы от этого слова нет, если же в самом начале, то код вобще отказывается работать.shelesto
AlexM - модифицированный скрипт эффекта не дает, как программа висла, так и виснет. Может попробовать указать сначала поиск в столбцах со значением ДАТА и, если значение есть, то только потом исполнение кода?
В приложении скриншот того, что получется, если выделить ячейку не в столбце с датами... иногда такой результат происходит спустя долгих раздумий, иногда Эексель просто перестает отвечать раз и навсегда.
AlexM - модифицированный скрипт эффекта не дает, как программа висла, так и виснет. Может попробовать указать сначала поиск в столбцах со значением ДАТА и, если значение есть, то только потом исполнение кода?
В приложении скриншот того, что получется, если выделить ячейку не в столбце с датами... иногда такой результат происходит спустя долгих раздумий, иногда Эексель просто перестает отвечать раз и навсегда.shelesto
Интересная картинка... А какую ячейку вы выделяли? буква дальше N строка 55526 Вы же писали, что фильтрация должна быть по столбцу с активной ячейкой. Данные в столбцах C, D, F и G Я пока не понимаю что вам нужно.
Интересная картинка... А какую ячейку вы выделяли? буква дальше N строка 55526 Вы же писали, что фильтрация должна быть по столбцу с активной ячейкой. Данные в столбцах C, D, F и G Я пока не понимаю что вам нужно. AlexM
Номер мобильного модема (без голосовой связи) 9269171249 МегаФон, Московский регион.
Сообщение отредактировал AlexM - Пятница, 19.04.2013, 20:10
Да, фильтрация столбца с активной ячейкой.....но если, допустим, какая-нибудь Тётя Мотя выделит ячейку в другом столбце, то программа очень сильно задумается и может упасть. Возможно ли применение какой-либо функции защиты от "дурака"? Логика моих рассуждений понятна?)
Да, фильтрация столбца с активной ячейкой.....но если, допустим, какая-нибудь Тётя Мотя выделит ячейку в другом столбце, то программа очень сильно задумается и может упасть. Возможно ли применение какой-либо функции защиты от "дурака"? Логика моих рассуждений понятна?)shelesto
Подскажите пожалуйста следующее, есть файл такой: состоит из двух столбцов, так вот. где ячейка В1 и В2 они объеденены во втором стобце с одним значением 12. Как сделать сортировку по II стобцу, чтобы не скрылась ячейка со значением В2. Очень прошу помощи
I столбец_______ II столбец А________________5 Б________________6 В1_______________12 В2
Подскажите пожалуйста следующее, есть файл такой: состоит из двух столбцов, так вот. где ячейка В1 и В2 они объеденены во втором стобце с одним значением 12. Как сделать сортировку по II стобцу, чтобы не скрылась ячейка со значением В2. Очень прошу помощи
I столбец_______ II столбец А________________5 Б________________6 В1_______________12 В2Ирина