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

Поиск и выделение цветом четырех наибольших значений Excel

18.07.2019, 10:49. Показов 3745. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, уважаемые форумчане! Прошу помочь в решении следующей задачи. Существует таблица из трех столбцов. В третьем столбце числовые значения. Как с помощью кода выбрать из столбца четыре наибольших значения и выделить эти строки цветом?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2019, 10:49
Ответы с готовыми решениями:

Выделение цветом значений в массиве
1. цветом выделить макс строку и столбец, где содержится макс элемент 2. массив заполнен двузнач числами, выделить цветом те, у которых...

Выделение цветом повторяющихся значений в форме
Здравствуйте!у меня такой вопрос..есть форма, в ней есть не ключевое поле ИП, возможно ли сделать так, что если в этой форме уже есть ИП с...

Выделение цветом активной ячейки в Excel
В Excel активная ячейка выделена границей – как выделить ее цветом? Имею ввиду, что при нажатии Enter, мышки и т.д. ячейка меняет цвет на...

10
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
18.07.2019, 11:17
Лучший ответ Сообщение было отмечено CAHDEP как решение

Решение

CAHDEP, Если обязательно использовать макрос, то можно так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub NaibolshieZnachenia()
    Dim rw As Long
    Dim max1 As Double, max2 As Double, max3 As Double, max4 As Double
    Dim i As Long
    rw = Cells(Rows.CountLarge, 3).End(xlUp).Row
    max1 = Application.Large(Range("C1:C" & rw), 1)
    max2 = Application.Large(Range("C1:C" & rw), 2)
    max3 = Application.Large(Range("C1:C" & rw), 3)
    max4 = Application.Large(Range("C1:C" & rw), 4)
    For i = 1 To rw
        If Cells(i, 3) = max1 Or Cells(i, 3) = max2 Or Cells(i, 3) = max3 Or Cells(i, 3) = max4 Then
            Rows(i).Interior.Color = vbYellow
        End If
    Next i
End Sub
Но ИМХО проще руками отфильтровать, покрасить первые 4 наибольших...
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 6
18.07.2019, 12:32  [ТС]
Спасибо большое. Только почему-то ругается на
max1 = Application.Large(Range("C1:C" & rw), 1). Выдает ошибку method range of object worksheet failed
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
18.07.2019, 12:57
CAHDEP, Покажите в файле.
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 6
18.07.2019, 13:57  [ТС]
Виноват. Работает. Большое человеческое спасибо А как выделить цветом только три ячейки из строки? Сейчас выделяется вся строка целиком.
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
18.07.2019, 14:04
CAHDEP, вместо 12 стоки напишите
Visual Basic
1
Range(Cells(i, 1), Cells(i, 3)).Interior.Color = vbYellow
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 6
18.07.2019, 14:10  [ТС]
Отлично! Очень помогли! Еще раз благодарю!
0
 Аватар для pashulka
4138 / 2242 / 940
Регистрация: 01.12.2010
Сообщений: 4,624
18.07.2019, 19:17
Если нельзя использовать условное форматирование, то можно ещё и так :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Test()
    Dim r As Range, a, i&, l_f, l_e
    Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
    a = r.Offset(, 2).Value
    l_f = Application.Large(a, 1)
    l_e = Application.Large(a, 4)
    
    Application.ScreenUpdating = False
    r.Resize(, 3).Interior.ColorIndex = xlNone
    For i = 1 To UBound(a)
        Select Case a(i, 1)
            Case l_e To l_f
               r(i).Resize(, 3).Interior.ColorIndex = 6
        End Select
    Next
    Application.ScreenUpdating = True
End Sub
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 6
19.07.2019, 12:03  [ТС]
Спасибо! Возникла еще необходимость подсчитать сумму чисел из окрашенных ячеек третьего столбца. Можете подсказать?
0
198 / 132 / 67
Регистрация: 27.03.2019
Сообщений: 288
19.07.2019, 12:36
CAHDEP, Сумма чисел хранится в переменной Sum
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub NaibolshieZnachenia()
    Dim rw As Long
    Dim max1 As Double, max4 As Double, Sum As Double
    Dim i As Long
    rw = Cells(Rows.CountLarge, 3).End(xlUp).Row
    max1 = Application.Large(Range("C1:C" & rw), 1)
    max4 = Application.Large(Range("C1:C" & rw), 4)
    For i = 1 To rw
        If Cells(i, 3) <= max1 And Cells(i, 3) >= max4 Then
            Range(Cells(i, 1), Cells(i, 3)).Interior.Color = vbYellow
            Sum = Sum + Cells(i, 3)
        End If
    Next i
    MsgBox Sum
End Sub
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 6
22.07.2019, 14:45  [ТС]
Большое спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2019, 14:45
Помогаю со студенческими работами здесь

Найти сумму четырех наибольших и четырех наименьших элементов массива
Привет помогите пожалуйста решить несколько задачек... 1.Дан массив из 25элементов, найти сумму четырех наибольших и четырех...

Найти сумму четырёх наибольших и четырёх наименьших элементов массива
Дан массив из 25 элементов найти сумму 4 наибольших х четырех наименьших элементов Результат распечатать в виде: Массив: Сумма...

Выделение цветом значений до достижения определенной суммы
Всем привет! помогите плиз с макросом. в столбце F необходимо выделить все суммы начиная с последней пока сумма выделенных значений не...

Выделение ячейки цветом по системному времени в Excel
Подскажите пожалуйста, как мне задать зависимость цвета ячейки от времени? Вот скажем есть список дел, которые нужно выполнить до...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru