Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка с заданными параметрами / 21 сообщений из 21, страница 1 из 1
17.09.2011, 23:26
    #37445100
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Здравствуете, подскажите, пожалуйста, есть ли возможность в VBA, задавать сортировку самому, то есть с заданными условиями, а точнее возможно ли задать, например следующим образом:
Яблоко
Груша
Вишня
Лук
...
Рейтинг: 0 / 0
17.09.2011, 23:33
    #37445105
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
0creator0, в соседнем столбце расставьте приоритеты и по нему сортируйте. Или создайте список уникальных с приоритетами, оттуда ВПР-ить приоритеты и по ним сортировать. Короче, Экселю надо дать понять, чего Вы от него хотите.
...
Рейтинг: 0 / 0
17.09.2011, 23:41
    #37445109
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Еще вариант - создание, пользовательского списка автозаполнения. По нему фильтровать.
...
Рейтинг: 0 / 0
18.09.2011, 00:36
    #37445127
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
А возможно создать в виде собственного фильтра, что б я прописал в самом коде VBA , что идет зачем, а макрос по этой аналогии мне отфильтровал, или в этом есть какие-нибудь нюансы?
...
Рейтинг: 0 / 0
18.09.2011, 16:44
    #37445360
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Кто-нибудь скиньте хоть примерный код ,как надо начать, есть идея, но не знаю, как это воплотить.
допустим в 1 столбце список
Лист 1
Яблоко
Груша
Вишня
На втором листе я пишу как надо сортировать:
Лист 2
Груша
Вишня
Яблоко
Скиньте, кто сталкивался с такой ситуацией решение, хоть как-то, похоже, а то мыслей вообще нет ни каких, с чего начать и к чему прийти есть только голый Excel.
Или ссылку на похожее если поднимали такой вопрос, перешерстил форум , похожего не нашел.
...
Рейтинг: 0 / 0
18.09.2011, 17:21
    #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
18.09.2011, 17:22
    #37445378
Ципихович Эндрю
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
сорри, не весь код обрамил тегом
...
Рейтинг: 0 / 0
18.09.2011, 18:36
    #37445431
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Вариант.
...
Рейтинг: 0 / 0
18.09.2011, 20:03
    #37445486
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
kuklp, спасибо, то что надо.
...
Рейтинг: 0 / 0
18.09.2011, 20:29
    #37445502
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Можно и формулами листа (при условии, что второй массив содержит все уникальные значениея первого массива). Можно и скриптом, с любыми наборами данных (и не обязательно встроенной сортировкой)...
...
Рейтинг: 0 / 0
19.09.2011, 00:02
    #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
19.09.2011, 22:14
    #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
19.09.2011, 22:21
    #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
19.09.2011, 22:36
    #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
20.09.2011, 00:18
    #37447202
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Спасибо, то что нужно!
...
Рейтинг: 0 / 0
21.09.2011, 17:54
    #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
21.09.2011, 18:07
    #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
22.09.2011, 09:32
    #37451043
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Спасибо IsEmpty(Sheets("Сумма") очень помогло , все стало более понятно.
...
Рейтинг: 0 / 0
22.09.2011, 10:01
    #37451072
Hugo121
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Внимательно!
Что выведет
Код: plaintext
Sheets("Сумма").Cells(r,  2 )) 
при
Код: plaintext
1.
r = Sheets("Сумма").UsedRange.Rows.Count
если UsedRange не с первой строки? А так бывает нередко...
...
Рейтинг: 0 / 0
22.09.2011, 10:28
    #37451123
0creator0
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сортировка с заданными параметрами
Hugo121, да здесь мне повезло и все идет с первой строки, а если действительно у меня будет не с первой строки ну допустим, в начале, будет обозначение столбца, и мне его в подсчет не нужно будет включать, что нужно написать что б вычислял с нужно строки
Я так понимаю, нужно будет через for как то делать?
...
Рейтинг: 0 / 0
22.09.2011, 10:39
    #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
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Сортировка с заданными параметрами / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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