我不知道这是否是正确的做法。但是这里。我有一些excel数据:
Column 1 | Column 2
1 | open
3 | issue
7 | closed
8 | open
我需要按第2列排序(列表顶部的'open'所有列,但是数字排序也是如此,因此带有'8,Open'的行将位于顶部)然后其余行需要排序只有数字最高的数字。
导致:
Column 1 | Column 2
8 | open
1 | open
7 | closed
3 | issue
以下是我的数字代码(第12列)。我需要其他方面的帮助。
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Selection.EntireRow.Columns(12), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.SetRange ActiveSheet.Range(Data)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
答案 0 :(得分:0)
您可以使用Sort
对象
Range
方法
Dim iniRow As Long
With Range("Data")
.Sort key1:=.Range("B1"), order1:=xlDescending, Header:=xlYes '<~~ first sort by column 2 ("B" in my test)
iniRow = Application.CountIf(.Columns(2).Cells, "open") '<~~ then count how many "open" are there
.Offset(iniRow + 1).Resize(.Rows.Count - (iniRow + 1)).Sort key1:=.Range("A" & iniRow + 2), order1:=xlDescending, Header:=xlNo '<~~ finally order remaining by column 1 ("A" in my test)
End With
答案 1 :(得分:0)
试试这个:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim sht As Worksheet
Dim StartDate, FinishDate As Date
Dim counter As Integer
StartDate = CDate(DateFrom.Text)
FinishDate = CDate(DateTo.Text)
Set sht = Worksheets("ItemsCompleted")
i = 1
counter = 0
While sht.Cells(i, 1) <> ""
If sht.Cells(i, 1) = CompanyName.Value Then ' compare value of cell with ComboBox value
If sht.Cells(i, 3) >= StartDate And sht.Cells(i, 3) <= FinishDate Then ' check if column C date is whithin range of selected dates
counter = counter + 1
End If
End If
i = i + 1
Wend
ResultLabel = counter
End Sub
修改强>:
的 _________________________________________________________________________________ 强>
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Range("B1"), xlSortOnValues, xlAscending, "Open"
ActiveSheet.Sort.SortFields.Add Range("A1"), xlSortOnValues, xlDescending
With ActiveSheet.Sort
.SetRange Range(Data)
.Header = xlGuess
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With