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

Выбрать несколько минимальных значений в массиве

30.03.2010, 17:50. Показов 4967. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые ГУРУ.
Программирую VBA впервые, хоть и есть небольшой опыт программирования на других языках, но это было давно.
Вообщем ситуация следующая.
Есть 2 списка с определенными строками.
Необходимо выбрать несколько строк из первого списка и несколько строк из второго списка и произвести определенные математические действия с ними. (Формула в коде)
Затем из полученных результатов необходимо выбрать несколько минимальных значений (необязательно равных). Кол-во минимальных значений равно кол-ву выбранных значений из первого списка.
Мысли есть, но как их реализовать в коде - не понимаю.

Список1

Элемент 1
Элемент 2
Элемент 3
Элемент 4
Элемент 5

Список 2
Элемент 1
Элемент 2
Элемент 3
Элемент 4
Элемент 5

Например в первом списке выбран элемент 1, Элемент 3, Элемент 5
Во 2-м списке выбран элемент 2, Элемент 5
Фактически, кол-во результатов будет = Кол-во выбранных элементов из Списка 1*Кол-во выбранных элементов из Списка 2
Одна из идей - вычисление для каждого элемента из 1-го списка занести в свой массив, НО - кол-во элементов может быть большим, и плодить лишние массивы не ходелось бы.
Вторая идея - создать двухмерный массив и заполнить его, но не знаю как.
При вычислении получаем следующие значения:
70;145;70;95;120;45
Первая пара чисел соответсвеует действию с элементом 1 из 1-го списка.
Вторая - Элементу 2 из 1-го списка
и т. д.
Необходимо в каждой паре найти минимальное значение, и записать их в отдельный массив.
ЗЫ. Если элементов во втором списке выбрано 3 и больше, соответсвенно необходимо минимальное значение выбирать из 3-х и более чисел.

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
Dim mas_lb1() As Integer 
Dim mas_lb2() As Integer
Dim rez() As Integer
'Размерность массива устанавливается в зависимости от введенного числа в NumEntText.Value
ReDim mas_lb1(NumEntText.Value)
ReDim mas_lb2(NumEntText.Value)
Dim num_lb1 As Integer
Dim num_lb2 As Integer
num_lb1 = 0
num_lb2 = 0
For i = 0 To NumEntText.Value - 1
' Выбираем из списка ListBox1 значения
    If ListBox1.Selected(i) Then 
        num_lb1 = num_lb1 + 1
        ReDim Preserve mas_lb1(num_lb1) 
        mas_lb1(num_lb1) = ListBox1.List(i)
'выводим выбранные значения в ListBox4
        ListBox4.AddItem ListBox1.List(i)
    End If
'Аналогично для списка ListBox3
    If ListBox3.Selected(i) Then
        num_lb2 = num_lb2 + 1 
        ReDim Preserve mas_lb2(num_lb2)
        mas_lb2(num_lb2) = ListBox3.List(i)
       ListBox5.AddItem ListBox3.List(i)
    End If
Next i
 
ReDim rez(1 To num_lb2) '(1 To num_lb1 * num_lb2) 
 
'Действия, которые необходимо произвести с полученными значениями
 
For i = 1 To num_lb1 
 
    For y = 1 To num_lb2 
 
    rez(y) = 45 + 25 * Abs(mas_lb1(i) - mas_lb2(y))
    ListBox6.AddItem rez(y)
 
    Next y
Next i
Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2010, 17:50
Ответы с готовыми решениями:

Как выбрать несколько минимальных значений в определенных категориях?
Здравствуйте! Есть проблема с созданием запроса по этому заданию: Отобразить самую дешевую книгу в каждой из следующих тематик:...

Найти несколько минимальных элементов в массиве
Дан массив, в нем есть k элементов, как найти 3,4,5...n минимальных элементов в массиве? Как найти конкретное число я знаю, а как иначе -...

Поиск ДВУХ минимальных значений в неупорядоченном массиве
Приветствую всех! Задача: Функция на вход принимает неупорядоченный массив целых чисел. Результатом функции возврат двух минимальных...

5
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 20
31.03.2010, 12:26  [ТС]
Собственно, сам файл
Вложения
Тип файла: xls Задание.xls (50.0 Кб, 61 просмотров)
0
 Аватар для Toxa33rus
3921 / 922 / 125
Регистрация: 16.04.2009
Сообщений: 1,966
31.03.2010, 21:18
Эх, вот бы файлик был бы с цифирками уже. Не понятно что выбирать, как выбирать, зачем выбирать.
0
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 20
01.04.2010, 08:53  [ТС]
Немного файлик подредактировал. Данные вводить в TextBox красного цвета. Затем нажать кнопку.
Думал записать данные в двухмерный массив, а потом уже делать выборку - но не получается.
Получается, что в моем коде массив rez каждый раз перезаписывается, после прохождения внутреннего цикла.
Считывать в дальнейшем результат с ListBox9 не хотелось бы, так как она случит для проверки и в дальнейшем этой формы не будет
Каким образом применить Redim в данном коде, я не знаю
Visual Basic
1
2
3
4
5
6
7
For i = 1 To num_lb1
    For y = 1 To num_lb2
    rez(y) = 45 + 25 * Abs(mas_lb1(i) - mas_lb2(y))
    ListBox9.AddItem rez(y)
 
    Next y
Next i
Вложения
Тип файла: xls Задание.xls (55.5 Кб, 31 просмотров)
0
 Аватар для Toxa33rus
3921 / 922 / 125
Регистрация: 16.04.2009
Сообщений: 1,966
01.04.2010, 13:58
Цитата Сообщение от timal63 Посмотреть сообщение
Думал записать данные в двухмерный массив, а потом уже делать выборку - но не получается.
Почему?
Если num_lb1 и num_lb2 заранее известны то может сразу и объявить массив?
Visual Basic
1
redim rez(1 to num_lb1, 1 to num_lb2)
а записывать данные так:
Visual Basic
1
rez(i, y) = 45 + 25 * Abs(mas_lb1(i) - mas_lb2(y))
1
0 / 0 / 0
Регистрация: 30.03.2010
Сообщений: 20
03.04.2010, 12:35  [ТС]
Спасибо Ответ был так близко , теперь осталось придумать, как делать выборку из этого массива
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2010, 12:35
Помогаю со студенческими работами здесь

Поиск двух одинаковых минимальных значений в массиве
Условие: дан массив U(1)...U(15). В нем есть два одинаковых Umin. Определить их индексы. Программу написал, но работает некорректно....

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

Выбрать несколько значений в каждой группе
Здравствуйте! Есть таблица: A | B 1 | "a" 1 | "a" 1 | "abc" 1 | "ed" 2 | "q" 3 | "r" 3 | "r" 3 |...

Выбрать сразу несколько значений из select-а
Добрый день! Нужно выбрать сразу несколько значений из select, и отправить запрос. Нужно как то изменить этот код select-а (запроса),...

Выбрать несколько максимальных значений из диапазона
Нужно сформировать таблицу с данными о 5-ти самых высокооплачиваемых сотрудниках фирмы, диапазон их окладов F2:F100, как выбрать из этого...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru