这只是一个记录宏‘排序’部分与板声明为DIM:
Dim MySheet As Worksheet: Set MySheet = Sheets("Sheet1")
MySheet.Sort.SortFields.Clear
MySheet.Sort.SortFields.Add _
Key:=Range("A1"), _
SortOn:=xlSortOnValues, _
Order:=xlDescending, _
DataOption:=xlSortNormal
With MySheet.Sort
.SetRange Range("A1:A10")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
现在,关于分组该cells.You可以在此基础上每一个“组”申报范围的价值,就像在一个名为范围(Ctrl+F3)
:
For i = 1 To MySheet.Rows.Count
Range_Start = "A" & i 'Store the begining of the range
If Range("A" & i) <> Range("A" & i - 1) Then
Range_End = "A" & i 'Store the begining of the range
MyRange = MySheet.Range(Range_Start & ":" & Range_End)
ActiveWorkbook.Names.Add Name:="range" & ActiveWorkbook.Names.Count + 1, RefersTo:=MyRange
Next i
Although, I think the storing of the Range_Start may need some fine-tunning
无论如何。最好的方法是使用Record
功能。然后,通过声明变量(s),并且只有在编写循环之后调整代码。根据你的问题,我不清楚你是什么意思的分组和你需要它。干杯!
为什么你不尝试你想做的事情,让我们知道它是否有效,或者如果你有关于如何改进这种方法的问题。如果您先发布自己的代码,然后再寻求帮助,您可能会得到更好的建议。 –
要将它们组合在一起,您必须先将它们排序。 –