excelvba编程-制作一个简单的世界杯Excel程序

excelvba编程-制作一个简单的世界杯Excel程序,excel,vba,Excel,Vba,我正在用excel做一些vba编程,我还没有做过很多编程,对这方面有些陌生。但我的问题是 快速提问。我想把一堆细胞分成一组。因此,如果一个单元格的值增加,例如,由于排序而向上移动,那么我希望连接到此单元格的其他单元格也随之移动 查看此图片: 例如,如果巴西在其右侧的一个单元格中获得值增加,则该行将与墨西哥行碰撞 我怎样才能让一组细胞粘在一起? < p>解释一下我的答案,考虑一下这个布局: Column 1 Column 2 Column 3 Column

我正在用excel做一些vba编程,我还没有做过很多编程,对这方面有些陌生。但我的问题是

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

查看此图片:

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


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

< p>解释一下我的答案,考虑一下这个布局:
            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
并将此代码保存在工作簿的第1页中

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列的合计,它将对该列上的整个范围进行排序。

那么如何使一组单元格粘在一起呢? 排序是按行进行的,所以您可以得到您想要的。 我会使用一个命名范围,比如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$20%22命名为$20range%22$20column$20key/microsoft.public.excel.programming/WyO1WRdBtSI/CUeHU1Q9TfsJ

将巴西移动到墨西哥上方的逻辑是什么?例如,如果巴西右侧的第一个单元格增加1,但小于墨西哥对应的单元格,则应将行向上移动?你的列标题是什么?是的。您可以添加另一列,该列使用数字将其余列相加,然后按该列排序。在VBA中也可以这样做。我同意L42,如果需要的话,我会说隐藏一列,将行中的总数相加,并使用一个按该列排序的工作表更改事件。