Сформировать одномерный массив, состоящий из
положительных, отрицательных и нулевых элементов. Используя VBA. среди
отрицательных элементов массива найти максимальный элемент. Создать новый массив,
состоящий из индексов элементов исходного массива, значения которых равны
найденному максимальному значению.
Создать таблицу, содержащую результат выполнения
процедуры, и командную кнопку для запуска процедуры.


Potrek: сложно что-то, можно проще)
Potrek: да у нас так проверяют элементов 10 будет максимум
Potrek: на код одним глазом глянут, кнопку нажмут и на это все закончится
BobbyFresnel: Начинается... Selection вернет Range, а в программе пишешь a = Range( ) и сразу a = массив нужного размера с его содержимым.
BobbyFresnel: Это наоборот не слодно, а самое простое
BobbyFresnel: Это же VBA, а не VB, надо Эксель задействовать по максимуму
Potrek: ну можно через a=range((), range().end(xldown)).count
BobbyFresnel: Это не нужно, так глубоко копать, строка-то одна. Все проще.
Potrek: ну все равно, мне нужно чтобы оно было)
Potrek: а пока что ничего нет(

Ответы

Ответ дал: BobbyFresnel
0

Sub Strange()

   Dim r As Range, a As Variant, b As Variant, e As Variant, Max As Variant

   Set r = Selection

   a = r

   Max = -1E+100

   For Each e In a

       If e < 0 And e > Max Then

           Max = e

       End If

   Next

   Dim i As Integer, j As Integer

   b = a

   j = LBound(b, 2) - 1

   For i = LBound(a, 2) To UBound(a, 2)

       If a(1, i) = Max Then

           j = j + 1

           b(1, j) = i

       End If

   Next

   Set r = Range(Cells(2, 1), Cells(2, j))

   Rows(2).Clear

   r = b

End Sub

Приложения:

BobbyFresnel: Чуть поправил, так правильнее
Похожие вопросы