Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
1

3 максимальных значения в диапазоне

11.10.2019, 11:50. Просмотров 1006. Ответов 17
Метки нет (Все метки)

Ребят, не соображу как задачку решить... у меня на лист с разных вкладок копируются строки с максимальными значениями ячейки.....но в одной вкладке, нужно 3 максимальных значения найти и 3 строки перенести.
макс я нашел как Application.Max([WorkRange]) ....а как мне 3 максимальных найти?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2019, 11:50
Ответы с готовыми решениями:

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

Определение среднего значения в заданном пользователем диапазоне
Вопрос Гуру VBA программирования, т.к. сам недавно начал заниматься VBA Excel и затрудняюсь в...

Нужен макрос удаляющий значения в диапазоне ячеек при условии
Подскажите как переделать макрос стирающий в заданном диапазоне ячеек все значения,и заливку...

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

Вывести значения ячеек из одного диапазона которых нет в другом диапазоне
Друзья помогите! Есть диапазон №1 из 4-х строк 1 столбца с текстовыми значениями A, B, C, D...

17
SoftIce
es geht mir gut
11121 / 4532 / 1144
Регистрация: 27.07.2011
Сообщений: 11,132
Завершенные тесты: 1
11.10.2019, 12:11 2
Отсортировать по убыванию, и взять первых три.

Цитата Сообщение от mor_sergey Посмотреть сообщение
перенести
А если перенести, то можно - ищешь максимально значение - переносишь, ищешь следующее - переносишь и т.д.
1
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 12:40  [ТС] 3
SoftIce, Точно....про сортировку не подумал..спасибо

Добавлено через 14 минут
SoftIce, а как правильно написать сортировку

Visual Basic
1
WorkRange.Sort Range("1, xlAscending, "), , xlAscending, , , xlYes
0
SoftIce
es geht mir gut
11121 / 4532 / 1144
Регистрация: 27.07.2011
Сообщений: 11,132
Завершенные тесты: 1
11.10.2019, 12:56 4
Цитата Сообщение от mor_sergey Посмотреть сообщение
как правильно написать сортировку
Запишите макрос и посмотрите.
1
11.10.2019, 12:56
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 13:03  [ТС] 5
SoftIce, пробовал. у меняWorkRange диапазон из 1 столбца. как мне указать, что по нему и нужна сортирока

Добавлено через 2 минуты
SoftIce, получилось! WorkRange.Sort Key1:=[WorkRange]... Спасибо
0
SoftIce
es geht mir gut
11121 / 4532 / 1144
Регистрация: 27.07.2011
Сообщений: 11,132
Завершенные тесты: 1
11.10.2019, 13:05 6
Ну и хорошо
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 14:29  [ТС] 7
SoftIce, не пойму....я проверял. диапазон сортировался как надо....сейчас опять без сортировки.может я не дописал чего.....подумал по умолчанию все отсортировалось как надо....что мне написать

Добавлено через 10 минут
SoftIce, не сортирует он
Visual Basic
1
2
WorkRange.Sort key1:=[WorkRange], _
   order1:=xlAscending, Header:=xlNo
0
Kate_27
188 / 126 / 63
Регистрация: 27.03.2019
Сообщений: 270
11.10.2019, 15:47 8
mor_sergey, есть еще функция поиска наибольших значений. Посмотрите ее. Application.worksheetFunction.Large
и сортировать ничего не надо для поиска таких значений.

Добавлено через 5 минут
Ну или правда отсортировать на листе и взять 3 первых значения.
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 15:49  [ТС] 9
Kate_27, а как же мне к своей задаче приспособирь...
диапазон из одного столбца WorkRange....спасибо

Добавлено через 46 секунд
Kate_27, не сортирует у меня....может просто не правитьно делаю
мне бы в массиве отсортировать и значения узнать....я ведь потом в диапазоне это значение циклом ищу
0
Kate_27
188 / 126 / 63
Регистрация: 27.03.2019
Сообщений: 270
11.10.2019, 15:50 10
вроде сортировка так примерно выглядит:
Visual Basic
1
2
3
4
With Worksheets("Ваше название листа").Sort
        .SetRange WorkRange 'название рабочего диапазона типа Range
        .Apply
End With
Не проверяла, но вроде должен сортировать так.
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 15:57  [ТС] 11
Kate_27, может воспользоваться Application.worksheetFunction.Large.....как второй максимум найти по нему?
0
Kate_27
188 / 126 / 63
Регистрация: 27.03.2019
Сообщений: 270
11.10.2019, 15:59 12
mor_sergey,
Visual Basic
1
2
max1 = Application.Large(WorkRange, 1)
max2 = Application.Large(WorkRange, 2)
Это первый максимум и второй максимум
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
11.10.2019, 17:06  [ТС] 13
Kate_27, нашел... спасибо огромное
Visual Basic
1
a = Application.WorksheetFunction.Large(WorkRange, 2)
Добавлено через 21 секунду
Kate_27, вы меня опередили

Добавлено через 1 час 6 минут
Kate_27, все таки применять нужно сортировку...LARGE берет толтко уникальные значения...мне нужно первые три максимальных.....буду думать дальше
0
Narimanych
546 / 432 / 205
Регистрация: 23.03.2015
Сообщений: 1,461
11.10.2019, 19:13 14
mor_sergey,
Visual Basic
1
2
3
4
For i = 1 To 3
 X = Application.WorksheetFunction.Large(Range("D1:D6"), i)
 MsgBox ("X " & i & "=" & X)
Next
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
12.10.2019, 09:49  [ТС] 15
Narimanych, огромное спасибо...но мне нужно именно первые три строки отсортированных по убыванию
0
Narimanych
546 / 432 / 205
Регистрация: 23.03.2015
Сообщений: 1,461
12.10.2019, 12:43 16
mor_sergey,
А что мешает вам узнать номер строки?
0
mor_sergey
77 / 11 / 0
Регистрация: 28.03.2018
Сообщений: 639
12.10.2019, 12:54  [ТС] 17
Narimanych, мне и нужно №1,№2,№3...первые три отсортированных по убыванию значения...т.е. 100,150,150....а LARGE такого не может.
0
Narimanych
546 / 432 / 205
Регистрация: 23.03.2015
Сообщений: 1,461
12.10.2019, 13:50 18
mor_sergey,

Вы файл приложите пжлста...
0
12.10.2019, 13:50
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2019, 13:50

Выбрать в диапазоне значения по заданному промежутку и перенести на другой лист Excel
Уважаемые форумчане! Пожалуйста, подскажите как сделать выборку значений в диапазоне по...

Вычислить сумму элементов массива, значения которых по модулю лежат в заданном диапазоне
Dim n As Integer Dim b As Integer Dim c As Integer Dim s As Integer Dim a() As Single Dim i As...

Копирование значения при после ввода на другой лист в первую пустую ячейку в определенном диапазоне
Добрый вечер! Помогите, пожалуйста, с проблемой. В VBA не силен, но формулами не получается...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.