2015-08-13 5 views
0

Я новичок в VBA, но немного продвигаюсь по сайту. Я пытаюсь получить excel, чтобы отсортировать список квартальных чисел, которые показывают последние 10 кварталов дохода, начиная с xQyr AMT в верхней части (x равно 1-4). У меня есть работа с вводом от пользователя, а затем сортировка данных в порядке убывания. Я хотел бы иметь возможность фильтровать все столбцы с выбранной сортировкой столбцов, но другие столбцы не теряют свой порядок соответственно. Любая помощь будет оценена!Как мне сортировать VBA так же, как сортировка excel работает до самого маленького?

Также будут приветствоваться любые советы для нового кодера!

'i = total number of rows(for deleting front text only) 
'strpt = First Cell with values(Top Line) 
'lastcol = total columns with values 
'lastrow = total rows after top is removed 
'flt = interested column to filter 
'range1 = first cell to sort 
'fstcell = first cell to sort 
'look = input variable to look for 


Sub filterq() 
    Dim totloc As Long, lastcol As Integer, lastrow As Integer, look As String 
    strtpt = 0 
    AutoFilterMode = False 'Set AutoFilter off 
    i = Cells(Rows.Count, 1).End(xlUp).Row 
    'Determine First Cell with information 
    strpt = Application.WorksheetFunction.Match("*", Range("B1:B" & i), 0) 
    MsgBox strpt 
    'Delete top portions 
    'Range("A1:A" & strpt - 1).EntireRow.Delete 

    'Determine Number of Columns & Rows in the sheet 
    lastcol = Cells(13, Columns.Count).End(xlToLeft).Column 
    lastrow = Cells(Rows.Count, 1).End(xlUp).Row 
    MsgBox lastrow & " " & lastcol 

    'Delete "Total" Row 
    'Find in Column A, Row with Total in text 
    'totloc = Application.WorksheetFunction.Match("Total", Range("A1:A" & lastrow), 0) 
    'MsgBox totloc 
    'Range("A" & totloc).EntireRow.Delete 

    'Filter columns to show highest revenue 
    Range(Cells(1, 1), Cells(1, lastcol)).Select 
    Selection.AutoFilter 
    look = Application.InputBox("Enter Quarter:", Type:=2) 
    look = look + " AMT" 
    MsgBox look 
    flt = Application.WorksheetFunction.Match(look, Range(Cells(1, 1), Cells(1, lastcol)), 0) 'Search for cell to filter 
    MsgBox flt 

    Set range1 = Range(Cells(1, flt), Cells(lastrow, flt)) 
    Set fstcell = Cells(2, flt) 

    range1.Sort Key1:=fstcell, Order1:=xlDescending, Header:=xlYes 

End Sub 

ответ

0

Понял, мне нужно было изменить диапазон на всю таблицу, а затем fstcell на ключевой столбец для фильтрации.