Excel VBA编程 - 制作一个简单的世界杯excel计划

时间:2014-05-23 14:16:25

标签: excel excel-vba vba

我正在excel中进行一些vba编程,我已经编写了很多程序并对此进行了新的分类。但是对我的问题。

快速提问。我想把一堆细胞制成一组。因此,如果一个单元格的值增加,例如由于排序而向上移动,那么我希望连接到该单元格的其他单元格随之移动。

查看此图片:

如果例如巴西在其右侧的一个单元格中获得了值增加,则该行将突破墨西哥行。

那么我怎样才能让一组细胞粘在一起?

2 个答案:

答案 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)