MS Access - 识别列中最高的3个值

时间:2016-01-28 12:30:14

标签: ms-access

我有一个包含以下数据的表:

ID    Team1    Team2    Team3    Team4    Team5    Team6
1     5        0        1        2        3        1
3     1        4        0        2        4        1
5     0        0        4        2        1        1
6     4        1        1        2        0        0

我希望从这些数据中获取3个新列,其中包含所有列中的第1,第2和第3个最高值,如下所示:

ID    Team1    Team2    Team3    Team4    Team5    Team6   Top1  Top2   Top3
1     5        0        1        2        3        1       5      3      2
3     1        4        0        2        4        1       4      4      2
5     0        0        4        2        1        1       4      2      1
6     4        1        1        2        0        0       4      2      1

这可以在Access中使用吗?我想对它们进行排名,以便相等的值按递增顺序排列,例如:

ID     Value   Rank
3      4       1
3      4       2
3      2       3
3      1       4
3      1       5

如果有办法通过这种方式实现它,我愿意使用VBA。如果以这种格式提取前3个值更容易,那么数据也可以不透视。

不透明数据样本:

ID    Team    Score
1     Team1   5
1     Team3   1
1     Team4   2
1     Team5   3
1     Team6   1
3     Team1   5
3     Team2   4
3     Team4   2
3     Team5   4
3     Team1   1

1 个答案:

答案 0 :(得分:0)

采取此功能(来自Finding Max of 3 Inputs VBA

Sub Maxthree()  
'Calculates the maximum of three numbers'  
Dim x, y, z As Single  
x = InputBox("Enter the first number!")  
y = InputBox("Enter the second number!")  
z = InputBox("Enter the third number!")  
MsgBox ("X: " & x & " Y: " & y & " Z: " & z)  
If x > y Then  
    If x > z Then  
        MsgBox ("the maximum is : " & x)  
    Else
        MsgBox ("the maximum is : " & z)  
    End If  
Else  
    If y > z Then  
        MsgBox ("the maximum is : " & y)  
    Else  
        MsgBox ("the maximum is : " & z)  
    End If  
End If  
End Sub  

调整它以返回最高值(而不是在msgbox中显示)。构造另外两个函数来获得第二个和第三个值。

在Sql查询中使用这些函数到你想要的列,

祝你好运。