我正在excel中进行一些vba编程,我已经编写了很多程序并对此进行了新的分类。但是对我的问题。
快速提问。我想把一堆细胞制成一组。因此,如果一个单元格的值增加,例如由于排序而向上移动,那么我希望连接到该单元格的其他单元格随之移动。
查看此图片:
如果例如巴西在其右侧的一个单元格中获得了值增加,则该行将突破墨西哥行。
那么我怎样才能让一组细胞粘在一起?
答案 0 :(得分:0)
要解释一下我的答案,请考虑Sheet1中的这种布局:
Column 1 Column 2 Column 3 Column 4 Column 5 Total
USA 15 0 0 0 0 15
Mexico 8 2 0 0 0 10
Germany 0 0 0 6 0 6
Brazil 2 0 0 0 0 2
Argentina 0 0 0 0 0 0
此工作簿的Sheet1中的代码
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("G1", Me.Range("G" & Me.Rows.Count).End(xlUp)).DirectPrecedents) Is Nothing Then
Range("A1", Me.Range("G" & Me.Rows.Count).End(xlUp)).Sort key1:=Me.Range("G1"), order1:=xlDescending, Header:=xlYes
End If
End Sub
现在,每当您更改第1列至第5列中的任何数字时,如果更新总列数G(总计),它将对该列上的整个范围进行排序。
答案 1 :(得分:0)
"那么如何让一组细胞粘在一起?"
排序按行完成,因此您可以得到您想要的结果
我会使用一个命名范围(例如," name1")
假设您要排序的总数为第9列,
Range("name1").Select ' not needed
With Range("name1")
.Sort Key1:=.Columns(9), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
'(来自Dave Peterson https://groups.google.com/forum/#!searchin/microsoft.public.excel.programming/sort $ 20%22named $ 20range%22 $ 20column $ 20key / microsoft.public.excel.programming / WyO1WRdBtSI / CUeHU1Q9TfsJ)