powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка диапазона данных VBA
3 сообщений из 3, страница 1 из 1
Сортировка диапазона данных VBA
    #36313890
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет. Имеется такая табличка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  A       B       C         D        E
 199 . 63 	 177 . 312 	 206 . 2632    184 . 59    188 . 365   

 100 . 32 	 88 . 8864 	 103 . 0224    102 . 58    102 . 816 

 87 . 45    Null    91 . 4784     84 . 65     87 . 678 

Null    Null     Null      Null    Null


 82 . 43 	          85 . 5234     78 . 30    89 . 61 

Необходимо построчно отсортировать в возрастающем порядке все числа.
Причем
1. Eсли в строке встречается NULL, то в сортировке данное значение учавствовать не

должно.

Т.е. из строки :
Код: plaintext
 87 . 45    Null    91 . 4784     84 . 65     87 . 678 

Должна получиться

Код: plaintext
 84 . 65    87 . 45     87 . 678     91 . 4784 

2. Если в диапазоне, например Range ("A10:E10"), встречаются одинаковые значения, то

повторяющееся значение должно быть удалено.

Как осуществить такое?
...
Рейтинг: 0 / 0
Сортировка диапазона данных VBA
    #36314002
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слелал так :
Код: plaintext
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.
Option Base  1 
Private Sub PArraySort()
Dim MyArray( 1  To  5 )

Application.ScreenUpdating = False
For i =  1  To ActiveCell.SpecialCells(xlLastCell).Row
     For j =  1  To  5 
       MyArray(j) = Cells(i, j).Value
     Next j
       Call MyArraySort(MyArray)
     For k =  1  To  5 
        Cells(i, k +  6 ).Value = MyArray(k)
     Next k
Next i
 Application.ScreenUpdating = True
End Sub

Function MyArraySort(List())
'Функция сортировки массива
     Dim First As Integer, Last As Integer
     Dim i As Integer, j As Integer
     
  First = LBound(List): Last = UBound(List)

For i = First To Last
     For j = i +  1  To Last
       If List(i) > List(j) Then
          Temp = List(j)
          List(j) = List(i)
          List(i) = Temp
       End If
     Next j
Next i
End Function
Но возникает вопрос как из массива удалять элементы, значения которых равны Null
...
Рейтинг: 0 / 0
Сортировка диапазона данных VBA
    #36314287
m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
m
Гость
А разве в Экселе есть значение NULL ? Мне кажется, это просто строка. При сортировке Эксель бросит ее в самый конец (строка всегда больше чем число). Когда будете выводить на лист, проверяете значение на "NULL" и если True ничего не выводите.
Код: plaintext
Cells(i, k +  6 ).Value = IIF(MyArray(k)="NULL","",MyArray(k))
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка диапазона данных VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]