验证excel中的列值是否已排序

时间:2011-03-30 09:12:33

标签: excel

我有一张excel表,其中的列具有排序值ex.numbers,names。 我想验证使用Vb脚本是否排序值而不是手动检查它。那么vbscript中是否有任何代码或方法或功能可以验证上述内容。

请帮帮我...... 在此先感谢:)

2 个答案:

答案 0 :(得分:2)

您可以遍历所有值并检查它们是否已排序:

Dim i as Integer
i = 2
Dim oldValue as Integer
oldValue = MySheet.Cells(1, 1).Value
Dim sorted as Boolean
sorted = True
Do While Not IsEmpty(MySheet.Cells(i, 1)) And sorted
  If MySheet.Cells(i, 1).Value < oldValue Then
    sorted = False
  EndIf
  oldValue = MySheet.Cells(i, 1).Value
  i = i + 1
Loop

答案 1 :(得分:1)

您可以使用Evaluate复制一个公式,该公式会根据下面的值检查每个值。您必须为要检查的范围之外的单元格构建检查。这只会检查所提供范围的第一列。

Function IsRangeSorted(rRng As Range) As Boolean

    Dim lResult As Long

    'If the cell just beyond the range is sorted, evaluate will return zero
    'If not, evaluate returns 1 but we don't care if that cell is sorted
    If rRng.Cells(rRng.Rows.Count + 1, 1).Value >= rRng.Cells(rRng.Rows.Count, 1).Value Then
        lResult = 0
    Else
        lResult = 1
    End If

    IsRangeSorted = Evaluate("=SUMPRODUCT(--(" & rRng.Columns(1).Address & ">=" & rRng.Columns(1).Offset(1).Address & "))") = lResult

End Function