Консультация № 201076
03.06.2021, 21:53
0.00 руб.
0 1 1
Здравствуйте! У меня возникли сложности с таким вопросом:
В массив A считать 100 действительных чисел, находящихся в первом столбце рабочего листа. Отсортировать элементы, стоящие на нечетных местах по возрастанию, а на четных местах по убыванию элементов. Полученный массив записать во второй столбец. Выделить разным цветом ячейки, соответствующие возрастающим и убывающим подмассивам. (Решить надо на языке VBA в макросе, можно просто код) Заранее огромное спасибо!!!

Обсуждение

давно
Модератор
137394
1850
04.06.2021, 10:23
общий
это ответ

Код:
Sub A100()

Const R1 = "A1" 'С какой ячейки считываем данные
Const N = 100 'Количество данных

r1n = Range(R1).Offset(N - 1, 0).Address
R2 = Range(R1).Offset(0, 1).Address
R2N = Range(R2).Offset(N - 1, 0).Address

With Range(R2 + ":" + R2N)
.ClearContents
.Interior.Pattern = xlNone
End With

Mass = Range(R1 + ":" + r1n)
Call MySort(Mass, N, 1, R2)
Call MySort(Mass, N, 2, R2)

Range(R2 + ":" + R2N) = Mass

End Sub
Sub MySort(M, N, k, R)
If k = 1 Then
For i = 1 To N Step 2
m1 = M(i, 1)
Range(R).Offset(i - 1, 0).Interior.Color = 5296274
For j = i To N Step 2
If M(j, 1) < m1 Then
M(i, 1) = M(j, 1)
M(j, 1) = m1
m1 = M(i, 1)
End If
Next
Next
End If
If k = 2 Then
For i = 2 To N Step 2
m1 = M(i, 1)
Range(R).Offset(i - 1, 0).Interior.Color = 65535
For j = i To N Step 2
If M(j, 1) > m1 Then
M(i, 1) = M(j, 1)
M(j, 1) = m1
m1 = M(i, 1)
End If
Next
Next
End If
End Sub

ya21060409.xlsm (17.6 кб)
5
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа