在宏中,我想对第四列中具有相同值的行进行分组。该列中有一定数量的值(因此我可能会为每个可能的值编写代码)但是假设无限值会更强。
我的第一个想法是创建一个循环,选择具有给定值的行,然后使用“Selection.Group”。我会“循环直到”第1列“IsEmpty”。
不太确定如何实现这一点。以下是我所得到的,这给了我一个错误消息; object_“工作表”的方法'范围'失败“
Sub Test()
Dim Item As Range
Item = Range(A2, A10)
If Item.Cells = "a" Then Cell.Select
Selection.Group
End Sub
答案 0 :(得分:0)
这只是“排序”部分的录制宏,片材声明为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
现在,关于分组单元格。您可以根据它的值声明每个“组”的范围,就像在命名范围(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
功能。然后,通过声明变量DIM
(s)来调整代码,并且只在编写循环之后。根据你的问题,我不清楚你的意思是分组和你需要它。干杯!