Страницы: 1
RSS
Как автоматически подтянуть (переместить) строки вверх по условию
 
Всем доброй пятницы!  
Подскажите как автоматически подтянуть (переместить) строки вверх по листу по условию  
 
в таблице нужно все строки, в которых значение ячейки столбца J равно "отгруз"  
подтянуть к верху чтобы шли друг за другом. т.е. сверху должны идти все строки со значением "отгруз"
 
а чем сортировка не подходит ?
Редко но метко ...
 
данные меняются несколько раз в день, строк более 5000, приходиться каждый раз менять условия
 
На вашем примере записал сортировку макрорекордером.    
 
Sub Макрос1()  
'  
' Макрос1 Макрос  
'  
 
'  
   Range("A1:J13").Select  
   ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear  
   ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range("J1:J13"), _  
       SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal  
   With ActiveWorkbook.Worksheets("Лист1").Sort  
       .SetRange Range("A1:J13")  
       .Header = xlGuess  
       .MatchCase = False  
       .Orientation = xlTopToBottom  
       .SortMethod = xlPinYin  
       .Apply  
   End With  
End Sub  
 
при необходимости несколько раз в день сортировать (если у вас не изменяется структура файла) сделайте кнопку и прицепите на нее єтот макрос c соответствующим диапазоном.
Редко но метко ...
 
Найдите 3 отличия :)  
 
Sub Macro1()  
'  
' Macro1 Macro  
 
 
'  
   Range("A3:J13").Select  
   Selection.Sort Key1:=Range("J4"), Order1:=xlAscending, Header:=xlGuess, _  
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom  
End Sub  
 
 
Sub Macro1()  
'  
' Macro1 Macro  
 
'  
 With [a3].CurrentRegion
   .Sort Key1:=Range("J3"), Order1:=xlAscending, Header:=xlGuess, _  
       OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom  
   End With  
End Sub
 
Зачем менять условия? Запишите макрорекордером действия: выделить ячейку в первой строке таблицы или в заголовке, если он есть; вызвать меню сортировки и указать нужные параметры. Потом запускайте макрос через Alt+F8 или создайте кнопку на панели.  
Конечно, макрорекордер натащит много лишнего. Фактически для данного примера нужна команда в одну строку:  
 
[J3].sort [J3],xlAscending,header:=xlno
 
{quote}{login=Hugo}{date=20.05.2011 03:43}{thema=}{post}Найдите 3 отличия :)  
 
{/post}{/quote}  
 
дык я специально не укорачивал макрос, что бы было видно что с макрорекордера )
Редко но метко ...
 
Дык я писал про отличия в своих двух макросах - первый записан рекордером, второй он же, но чуть изменён мною.  
Может быть на секунду только опоздал :)
 
Буду экспериментировать .....
Страницы: 1
Читают тему
Loading...