Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 06.02.2020
Сообщений: 16
Excel

Фильтрация списка и вывод соответствующих значений

27.05.2020, 13:41. Показов 1372. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Есть 8 колонок для оценок, в каждой оценки от 1 до 5. На всякий случай есть поле сцепки всех оценок.
Подскажите пожалуйста, как реализовать фильтр, который пройдется по всем столбцам(или значения в ячейке) и выдаст только те ФИО, в значениях оценок которых присутствую либо две единицы, либо единица и двойка, либо две двойки в указанном диапазоне.
Т.е., например, ФИО с оценками 32423243 он скрывает фильтром, так как тут две и более двойки, а ФИО с значениями 34433243, он выводит, так как тут присутствует только одна двойка.
Буду благодарна за любую помощь.
Файл на всякий случай прилагаю.пример.xlsx
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.05.2020, 13:41
Ответы с готовыми решениями:

Фильтрация списка и вывод соответствующих значений
Добрый вечер. Помогите пожалуйста решить следующее: есть база работников, по табельному номеру(ТН) руководителя, необходимо вывести...

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

Вывод соответствующих значений из базы данных
Добрый день, уважаемые знатоки )) Есть следующая проблема: Есть 3 select'a, в них прописаны значения наименования производителей,...

8
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
27.05.2020, 14:03
yulilntv,
Цитата Сообщение от yulilntv Посмотреть сообщение
в значениях оценок которых присутствую либо две единицы, либо единица и двойка, либо две двойки в
красятся в желтый цвет
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub MMM()
Application.ScreenUpdating = False
'For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'    ONE = 0
'    TWO = 0
'            For j = 3 To 10
'            If Cells(i, j).Value = 1 Then ONE = ONE + 1
'            If Cells(i, j).Value = 1 Then TWO = TWO + 1
'            Next
'            If ONE >= 2 Or TWO >= 2 Or (ONE = 1 And TWO = 1) Then
'            Range(Cells(i, 1), Cells(i, 10)).Interior.Color = vbYellow
'            End If
'Next
Application.ScreenUpdating = False
End Sub
Добавлено через 28 секунд
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub MMM()
Application.ScreenUpdating = False
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    ONE = 0
    TWO = 0
            For j = 3 To 10
            If Cells(i, j).Value = 1 Then ONE = ONE + 1
            If Cells(i, j).Value = 1 Then TWO = TWO + 1
            Next
            If ONE >= 2 Or TWO >= 2 Or (ONE = 1 And TWO = 1) Then
            Range(Cells(i, 1), Cells(i, 10)).Interior.Color = vbYellow
            End If
Next
Application.ScreenUpdating = False
End Sub
Добавлено через 1 минуту
Столбец К -не нужен
1
0 / 0 / 0
Регистрация: 06.02.2020
Сообщений: 16
27.05.2020, 14:13  [ТС]
Получается в желтый цвет окрашивается строка с ФИО сотрудника, у которых есть повторяющиеся плохие оценки. Тогда, чтобы остались только сотрудники с хорошими оценками, нужно выставить фильтр по цвету? Подскажите пожалуйста как это сделать?
0
 Аватар для Narimanych
2751 / 1725 / 779
Регистрация: 23.03.2015
Сообщений: 5,449
27.05.2020, 14:55
yulilntv,

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub MMM()
Application.ScreenUpdating = False
LR = Cells(Rows.Count, 1).End(xlUp).Row
Rows("1:1000").Hidden = False
For i = 2 To LR
    ONE = 0
    TWO = 0
 
            For j = 3 To 10
            If Cells(i, j).Value = 1 Then ONE = ONE + 1
            If Cells(i, j).Value = 1 Then TWO = TWO + 1
            Next
            If ONE >= 2 Or TWO >= 2 Or (ONE = 1 And TWO = 1) Then
 
            Range(Cells(i, 1), Cells(i, 10)).Interior.Color = vbYellow
            Else
              Rows(i).Hidden = True
            End If
Next
Application.ScreenUpdating = True
End Sub
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
27.05.2020, 23:29
yulilntv, Если исходить из об'единённых данных, то можно использовать что-то вроде этого. И фильтровать, выбрав в качестве критерия >0 или >=1

Code
1
=СЧЁТ(ПОИСК("*"&{"1*1":"2*2":"1*2":"2*1"}&"*";K2))

А если нужно обязательно программно, то можно ещё и так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub MultiFilter()
    Dim r As Range, b(1 To 2) As Boolean, Criteria, a
    With ActiveSheet.UsedRange
         If .Rows.Count = 1 Then Exit Sub
         Set r = .Offset(1).Resize(.Rows.Count - 1)
    End With
    
    Application.ScreenUpdating = False
    r.Rows.Hidden = True: Criteria = Array(1, 2)
    For Each r In r.Rows
        a = Application.CountIf(r, Criteria)
        b(1) = a(1) = 1 And a(2) = 1
        b(2) = a(1) = 2 Or a(2) = 2
        If b(1) Or b(2) Then r.Hidden = False
    Next
    Application.ScreenUpdating = True
End Sub
или так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub MultiFilter2()
    Dim r As Range, Criteria, a
    With ActiveSheet.UsedRange
         If .Rows.Count = 1 Then Exit Sub
         Set r = .Offset(1).Resize(.Rows.Count - 1)
    End With
    
    Application.ScreenUpdating = False
    r.Rows.Hidden = True: Criteria = Array(1, 2)
    For Each r In r.Rows
        a = Application.CountIf(r, Criteria)
        Select Case True
            Case a(1) = 1 And a(2) = 1: r.Hidden = False
            Case a(1) = 2 Or a(2) = 2:  r.Hidden = False
        End Select
    Next
    Application.ScreenUpdating = True
End Sub
1
0 / 0 / 0
Регистрация: 06.02.2020
Сообщений: 16
28.05.2020, 17:52  [ТС]
pashulka, Т.е. если я правильно поняла, то поиск идет по столбцу K по ячейке с объединенными данными, это 11 столбец, нопростите, не могу понять, где обращение к столбцу, в котором происходит поиск данных?
Спрашиваю потому, что хочу разобраться, ведь мне это надо перенести на таблицу с 150 столбцами и иными данными (помимо оценок), т.е. фильтр полностью по всем данным не подходит.

Добавлено через 16 минут
pashulka, и получается он работает наоборот, он скрывает строки с "хорошими оценками", а оставляет с "плохими"
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
28.05.2020, 17:59
yulilntv, Столбец K нужен только для формулы, в макросе он не используется. Всё верно, я так и задумывал, но ведь не трудно заменить False на True ? и наоборот ?
0
0 / 0 / 0
Регистрация: 06.02.2020
Сообщений: 16
29.05.2020, 15:57  [ТС]
pashulka, я уже голову сломала, подскажите пожалуйста как Ваш код интегрировать в мой документ? Мне необходимо сделать эту фильтрацию в UserForm5 по нажатию на command button 1. Данные находятся в столбцах 132-140(EC-EJ)
Ваш код я чуть исправила на под вывод "хороших оценок", получилось так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Dim r As Range, Criteria, a
    With Worksheets("База Общая").UsedRange
         If .Rows.Count = 1 Then Exit Sub
         Set r = .Offset(1).Resize(.Rows.Count - 1)
    End With
    
    Application.ScreenUpdating = False
    r.Rows.Hidden = False: Criteria = Array(1, 2)
    For Each r In r.Rows
        a = Application.CountIf(r, Criteria)
        Select Case True
            Case a(1) = 1 And a(2) = 1: r.Hidden = True
            Case a(1) = 2 Or a(2) = 2:  r.Hidden = True
        End Select
    Next
Я честно пыталась разобраться, но не могу понять где код, который ссылается на просматриваемый массив
Мой документ, куда хочу интегрировать код: https://yadi.sk/i/Hxqn-5eFeet-uw
0
 Аватар для pashulka
4139 / 2243 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
29.05.2020, 16:35
Лучший ответ Сообщение было отмечено yulilntv как решение

Решение

Диапазон, это, как правило, там, где наличествуют ключевые слова Range, Cells, Columns, Rows, реже Evaluate и []

Вариантов указать EC-EJ множество, но когда данные начинаются с первого столбца, то можно даже так :

Visual Basic
1
2
3
4
    With Лист6.UsedRange.Columns(133) 'Worksheets("База Общая").UsedRange
         If .Rows.Count = 1 Then Exit Sub
         Set r = .Offset(1).Resize(.Rows.Count - 1, 8)
    End With
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.05.2020, 16:35
Помогаю со студенческими работами здесь

Вывод соответствующих регулярке значений массива
Привет, объясните пожалуйста, почему данный скрипт не выводит следующие значения: 4, 5, а выводит s4, w5? Скажите пожалуйста, как я могу...

Вывод соответствующих данных для каждого элемента списка
Здравствуйте. Проблема заключается в следующем. Имеется список выводимый запросом из базы данных. $list = $connect->query(' ...

Поиск в таблице и вывод значений, соответствующих условиям
Друзья доброго всем утра. Сегодня прислали задание с утра, но мой мозг категорически отказывается его понять. Решать не прошу за себя,...

Фильтрация и вывод на экран значений в подчинённой форме
Всем привет! Вопрос кажется простым, но у меня что то не получается выполнять его корректно. Есть форма, в ней есть подчинённая...

Вывод и фильтрация значений по максимальной дате внутри одной таблицы
Добрый вечер! Столкнулся с проблемой. Есть задача выводить статусы изменений по движению наименования из таблицы импортированной из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru