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

Найти три максимальных числа из выбранного диапазона в экселе

12.06.2012, 22:47. Показов 6285. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как найти три максимальных числа из выбранного диапазона в экселе? С одним то все понятно, а вот как второе по величине найти и третье не могу разобраться.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Sub srball()
tt = MsgBox("Для поиска наибольшего среднего балла задайте диапозон" & Chr(13) & Chr(10) & "(более одного элемента)" & Chr(13) & Chr(10), vbYesNo + vbQuestion, "Информационное окно")
Dim sel As Range
Set sel = ActiveWindow.RangeSelection
 
Dim m, n, i, j As Integer
If sel.Count = 1 Then
    MsgBox ("выделите диапозон," & Chr(13) & Chr(10) & "затем запустите макрос еще раз.")
    GoTo finish
End If
 
m = sel.Rows.Count
n = sel.Columns.Count
 
Dim arr() As Single
ReDim arr(1 To m, 1 To n) As Single
 
For i = 1 To m
    For j = 1 To n
    arr(i, j) = sel.Cells(i, j).Value
    Next j
Next i
 
MyMax = arr(1, 1)
For i = 1 To m
    For j = 1 To n
    If arr(i, j) > MyMax Then MyMax = arr(i, j)
    Next j
Next i
 
MyMax2 = arr(1, 1)
For i = 1 To m
    For j = 1 To n
    If arr(i, j) > MyMax2 & arr(i, j) < MyMax Then MyMax2 = arr(i, j)
    Next j
Next i
 
MyMax3 = arr(1, 1)
For i = 1 To m
    For j = 1 To n
    If arr(i, j) > MyMax3 & arr(i, j) < MyMax2 Then MyMax3 = arr(i, j)
    Next j
Next i
 
MsgBox ("максимальное значение1:" & MyMax)
MsgBox ("максимальное значение2:" & MyMax2)
MsgBox ("максимальное значение3:" & MyMax3)
Cells(m + 3, n + 2).Value = MyMax
Cells(m + 4, n + 2).Value = MyMax2
Cells(m + 5, n + 2).Value = MyMax3
finish:
End Sub
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2012, 22:47
Ответы с готовыми решениями:

Суммировать три максимальных числа из выбранного диапазона через пользовательскую функцию
Помогите чайнику!!! Прошу помощи в создании пользовательской функций на VBA Необходимо написать макрос при помощи которого будут...

Найти три максимальных и три минимальных значения 10 случайных чисел
помогите написать программку.

Три максимальных числа последовательности
Задача заключалась в том, чтобы вывести на черный экран три максимальных числа (игнорируя дубликаты) последовательности чисел, не...

4
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
12.06.2012, 23:10
Нужно сортировать массив по убыванию любым методом.
В начале массива и будут максимальные числа
1
1 / 1 / 0
Регистрация: 04.06.2010
Сообщений: 22
12.06.2012, 23:23  [ТС]
помогите пожалуйста с кодом, не понимаю как вставит туда сортировку(
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
13.06.2012, 00:19

Не по теме:

Ой, выложил код, да не тот , футбол смотрю.
Подожди мин.



Добавлено через 10 минут
Попробуй так:

Не по теме:

1:1


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Sub srball()
tt = MsgBox("Для поиска наибольшего среднего балла задайте диапозон" & Chr(13) & Chr(10) & "(более одного элемента)" & Chr(13) & Chr(10), vbYesNo + vbQuestion, "Информационное окно")
Dim sel As Range
Set sel = ActiveWindow.RangeSelection
 
Dim m, n, i, j As Integer
If sel.Count = 1 Then
    MsgBox ("выделите диапозон," & Chr(13) & Chr(10) & "затем запустите макрос еще раз.")
    GoTo finish
End If
 
m = sel.Rows.Count
n = sel.Columns.Count
 
Dim arr() As Single, arr1() As Single, temp_i As Integer
ReDim arr(1 To m, 1 To n) , arr1(1 To m * n)
 
For i = 1 To m
    For j = 1 To n
        arr(i, j) = sel.Cells(i, j).Value
        temp_i = temp_i + 1
        arr1(temp_i) = arr(i, j)
    Next j
Next i
 
BubbleSort arr1
 
MsgBox ("максимальное значение1:" & arr1(1))
MsgBox ("максимальное значение2:" & arr1(2))
MsgBox ("максимальное значение3:" & arr1(3))
Cells(m + 3, n + 2).Value = arr1(1)
Cells(m + 4, n + 2).Value = arr1(2)
Cells(m + 5, n + 2).Value = arr1(3)
finish:
End Sub
 
Public Sub BubbleSort(ByRef arr() As Single)
    Dim i As Integer, j As Integer, tmp As Single
     For i = 1 To UBound(arr)
        For j = 1 To UBound(arr) - i - 1
            If arr(j) < arr(j + 1) Then
                tmp = arr(j)
                arr(j) = arr(j + 1)
                arr(j + 1) = tmp
            End If
        Next j
    Next i
End Sub
1
1 / 1 / 0
Регистрация: 04.06.2010
Сообщений: 22
13.06.2012, 01:16  [ТС]
спасибо большое, все заработало)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2012, 01:16
Помогаю со студенческими работами здесь

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

Три максимальных числа в последовательности без дубликатов
Вводится последовательность целых чисел, не превосходящих по модулю 10^9, и при этом не равных нулю. Ноль – признак конца. Выдайте три...

Найти три максимальных элемента массива
найти три максимальных элементы массива

Найти три максимальных аэлемента одномерного массива
нужна помощь. просто не могу понять в чём ошибка. + нужно ещё ввести сам массив с клавиатуры с n элементами. 3 часа убил, а результат...

Найти три максимальных элемента и их сумму в массиве
Всем привет. Помогите с задачей, если не затруднит. Звучит она так: &quot;Дан одномерный массив, состоящий из десяти целых двузначных чисел в...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru