powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка с заданными параметрами
21 сообщений из 21, страница 1 из 1
Сортировка с заданными параметрами
    #37445100
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуете, подскажите, пожалуйста, есть ли возможность в VBA, задавать сортировку самому, то есть с заданными условиями, а точнее возможно ли задать, например следующим образом:
Яблоко
Груша
Вишня
Лук
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445105
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0creator0, в соседнем столбце расставьте приоритеты и по нему сортируйте. Или создайте список уникальных с приоритетами, оттуда ВПР-ить приоритеты и по ним сортировать. Короче, Экселю надо дать понять, чего Вы от него хотите.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445109
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще вариант - создание, пользовательского списка автозаполнения. По нему фильтровать.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445127
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А возможно создать в виде собственного фильтра, что б я прописал в самом коде VBA , что идет зачем, а макрос по этой аналогии мне отфильтровал, или в этом есть какие-нибудь нюансы?
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445360
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь скиньте хоть примерный код ,как надо начать, есть идея, но не знаю, как это воплотить.
допустим в 1 столбце список
Лист 1
Яблоко
Груша
Вишня
На втором листе я пишу как надо сортировать:
Лист 2
Груша
Вишня
Яблоко
Скиньте, кто сталкивался с такой ситуацией решение, хоть как-то, похоже, а то мыслей вообще нет ни каких, с чего начать и к чему прийти есть только голый Excel.
Или ссылку на похожее если поднимали такой вопрос, перешерстил форум , похожего не нашел.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445376
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0creator0, зря Вы, что Эксель голый, для затравки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub P1()

'отсортировать десять чисел записанных на рабочем листе
'отсортировать с помощью сортировки прямого выбора, сортировка по убыванию
Dim Массив( 1  To  10 ) As Long
Dim i As Integer, j As Integer
Dim MaxЭлемент As Integer, MaxЗначение As Long
'Заполняем массив целыми числами из Excel.
For i =  1  To  10  Step  1 
    Массив(i) = Cells(i,  1 ).Value
Next i
'Собственно сортировка методом Прямой выбор.
For i =  1  To  10  -  1  Step  1 
    MaxЗначение = Массив(i): MaxЭлемент = i
    For j = i +  1  To  10  Step  1 
        If Массив(j) > MaxЗначение Then
            MaxЗначение = Массив(j): MaxЭлемент = j
        End If
    Next j
    Массив(MaxЭлемент) = Массив(i):  Массив(i) = MaxЗначение
Next i
'Вывод результата Сортировки в Excel.
For i = 1 To 10 Step 1
Cells(i, 1).Value = Массив(i)
Next i
End Sub
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445378
Ципихович Эндрю
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, не весь код обрамил тегом
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445431
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вариант.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445486
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kuklp, спасибо, то что надо.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445502
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно и формулами листа (при условии, что второй массив содержит все уникальные значениея первого массива). Можно и скриптом, с любыми наборами данных (и не обязательно встроенной сортировкой)...
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37445656
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM, спасибо большое чуть доработал, и вообще стало шикарно, и ещё раз хочу сказать большое спасибо Hugo121, а так же kuklp, PlanB вы мне очень помогли.
Да поставил следующее
If InStr(a(i, 1), b(n, 1)) > 0 Then
Теперь он может сортировать в заданном порядке, если даже в списки, стоит допустим яблоко1 или 2яблоко. Вообще м по основе .
И если не сложно можете подсказать ответы на такие вопросы,
Можно ли заменить b = Range("b2:b6") , массивом из слов в самом коде, т.е. допустим
Array("Яблоко", "Груша",”Вишня”,”Лук”,”Морковь”), и если да, то какой способ будет более правильным , и действенным , если заранее предполагать, что сортировка будет происходить где то по 100 наименованием а сам список сортируемы будет предпологать около 1000 позиций.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37447085
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не хотел обращаться, но эту маленькую загвоздку, что то не осилить мне.
А проблема в следующем, по примеру AndreTM, я сделал сортировку но , появилась загвоздка сортируется только один столбик A , а остальные остаются без изменений как можно это подправить?
авторPrivate Sub CommandButton1_Click()
t = Sheets("Сумма").[A:A]
p = Sheets(2).[A1:A4]
t0 = 1
k = 1
While k <= UBound(p, 1)
For i = t0 To UBound(t, 1)
If InStr(t(i, 1), p(k, 1)) > 0 Then
If i > t0 Then
ti = t(i, 1)
t(i, 1) = t(t0, 1)
t(t0, 1) = ti
End If
t0 = t0 + 1
End If
Next
k = k + 1
Wend
End Sub
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37447100
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думал моежт вот это пристроить к коду но не получается
авторApplication.AddCustomList ListArray:=Sheets(2).[A1:A4]
Sheets(1).[A1].CurrentRegion.Sort Key1:=Sheets(1).[A1], _
OrderCustom:=Application.CustomListCount + 1
Application.DeleteCustomList Application.CustomListCount
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37447114
0creator0,
если правильно понял проблему:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Private Sub CommandButton1_Click()
Dim ii%
t = Sheets("Сумма").[A:K]
p = Sheets( 2 ).[A1:A4]
t0 =  1 
k =  1 
While k <= UBound(p,  1 )
For i = t0 To UBound(t,  1 )
If InStr(t(i,  1 ), p(k,  1 )) >  0  Then
If i > t0 Then
' >>>>>>>>>>
  For ii =  1  To  11 
	ti = t(i, ii)
	t(i, ii) = t(t0, ii)
	t(t0, ii) = ti
  Next ii
' <<<<<<<<<<
End If
t0 = t0 +  1 
End If
Next
k = k +  1 
Wend
End Sub
ЗЫ: приложеных файлов не смотрел
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37447202
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, то что нужно!
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37450405
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как сделать, что б макрос видел последнюю заполненную строчку, а то он у меня видит, сколько всего, в том числе и пустых, а вот заполненных он не видит например:
LRow=1000 (когда заполненные всего 25 по Cells(r, 2))
LastRow=1500 (когда заполненные всего 10 по Cells(n, 1))
А рядом с ними в следующих столбцах стоят значение и они как раз заполнены на листе Sheets("Сумма") 1000 и он как раз их и определяет как всего
Sheets("Итог") 1500

авторWith Sheets("Сумма").UsedRange
LastRow = .Rows.Count
For r = LastRow To 1 Step -1
If .Cells(r, 2) = "" Then .Rows(r).Delete
End If
Next
End With
With Sheets("Итог").UsedRange
LRow = .Rows.Count
For n = LRow To 1 Step -1
If .Cells(n, 1) = "" Then
End If
Next
End With
t = Sheets("Сумма").[A:C]
p = Sheets("Итог").[A:A]
t0 = 1
k = 1
While k <= LRow( нужно 25 а видит как 1000)
For i = t0 To LastRow
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37450417
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.UsedRange относится ко всему листу, а не к "столбцу".

Сделайте примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
...
r = Sheets("Сумма").UsedRange.Rows.Count
LastRow =  0 
While r >=  1 
    If IsEmpty(Sheets("Сумма").Cells(r,  2 )) Then
        Then Sheets("Сумма").Rows(r).Delete
    Else
        r = r -  1 
        LastRow= LastRow +  1 
    End If
Wend
...
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37451043
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо IsEmpty(Sheets("Сумма") очень помогло , все стало более понятно.
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37451072
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Внимательно!
Что выведет
Код: plaintext
Sheets("Сумма").Cells(r,  2 )) 
при
Код: plaintext
1.
r = Sheets("Сумма").UsedRange.Rows.Count
если UsedRange не с первой строки? А так бывает нередко...
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37451123
0creator0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hugo121, да здесь мне повезло и все идет с первой строки, а если действительно у меня будет не с первой строки ну допустим, в начале, будет обозначение столбца, и мне его в подсчет не нужно будет включать, что нужно написать что б вычислял с нужно строки
Я так понимаю, нужно будет через for как то делать?
...
Рейтинг: 0 / 0
Сортировка с заданными параметрами
    #37451154
Hugo121
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
0creator0,

Нет, чувствую, что не поняли.
Если UsedRange не с первой строки, а например с десятой и 5 строк, то r = 5, тогда
Sheets("Сумма").Cells(r, 2)) будет Sheets("Сумма").Cells(5, 2)), что указывает на вообще пустое место выше данных.
Нужно ещё учитывать UsedRange.Row.

Но в коде выше
With Sheets("Сумма").UsedRange
LastRow = .Rows.Count
всё в порядке, пока сидим в With.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка с заданными параметрами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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