Excel成绩表
所以,我还不知道怎么做 基本上,我想要这样的东西:Excel成绩表,excel,comparison,cell,Excel,Comparison,Cell,所以,我还不知道怎么做 基本上,我想要这样的东西: P1 P2 P3 TOTAL SCORE -- -- -- P1 P2 P3 21 / 13 1 2 0 / 17 10 6 7 / 因此,三列必须相互比较(“/”表示玩家没有玩该游戏,但不必打印),三列中最大的一列在总分选项卡中获得+1值 另外,有没有比将一个单元
P1 P2 P3 TOTAL SCORE
-- -- -- P1 P2 P3
21 / 13 1 2 0
/ 17 10
6 7 /
因此,三列必须相互比较(“/”表示玩家没有玩该游戏,但不必打印),三列中最大的一列在总分选项卡中获得+1值
另外,有没有比将一个单元格与另一个单元格进行比较更简单的方法?我的意思是,是否有可能拖动并标记所有三列上的所有单元格,并确保它们只比较同一行中三列中的单元格 使用大功能查找左侧单个游戏的最大数字。然后使用右边的IF语句检查大函数的值是否与玩家的游戏分数匹配。如果匹配(TRUE),则将值指定为1。如果不匹配(FALSE),则将值指定为0。然后求和每个玩家的修饰符,这些修饰符是你用IF函数指定的
如果单个游戏分数中可能出现平局,您还需要嵌套另一个If函数来处理这种可能性。假设数据如表1中的图片所示(不要更改结构):
选项显式
公共子流程_数据(ByVal I_值长度)
最后一排一样长
我想我会坚持多久
将CA设置为整数
将CB设置为整数
作为整数的Dim CC
附页1
LastRow=.Range(“A”&Rows.Count).End(xlUp).Row
对于i=i_Value To LastRow'CC Then',您喜欢VBA代码吗?我没有使用VBA,但我总是乐于学习新东西,而且我只想拥有这种类型的分数表,所以请随时显示mei在代码中做了一些更改。请现在再试。好的,这会产生想要的结果,但在我输入下一个分数时不会更新。我得再重复一遍你的步骤,但是结果乘以2@m164您必须导入一次结果,然后运行代码以获得结果。如果您计划在现有数据集中添加更多结果,我们必须更改代码。只需清除您修改代码的需要。我认为很明显,我打算将其用作工作分数跟踪表,这意味着我会经常给它添加新的分数,所以我试着在excel的代码中获得一些关于如何做的建议,这样它就会自动更新。。。尽管如此,您的回答确实帮助我理解了VBA代码,我对此表示感谢
Option Explicit
Public Sub Process_Data(ByVal I_Value As Long)
Dim LastRow As Long
Dim i As Long
Dim CA As Integer
Dim CB As Integer
Dim CC As Integer
With Sheet1
LastRow = .Range("A" & Rows.Count).End(xlUp).Row
For i = I_Value To LastRow '<= Lets say that the first score is at sheet1 column A row 3.LastRow represent the row of the last data in column A
CA = 0
CB = 0 '<= Every time that i change value we zero our variables to get the new value
CC = 0
If .Range("A" & i).Value = "/" Then '<= Check if there is a number or "/".if there is "/" we zero variable
CA = 0
Else
CA = .Range("A" & i).Value
End If
If .Range("B" & i).Value = "/" Then
CB = 0
Else
CB = .Range("B" & i).Value
End If
If .Range("C" & i).Value = "/" Then
CC = 0
Else
CC = .Range("C" & i).Value
End If
If CA > CB And CA > CC Then ' <= Check which number is bigger
.Range("E3").Value = .Range("E3").Value + 1 '<= At one point to each category
ElseIf CB > CA And CB > CC Then
.Range("F3").Value = .Range("F3").Value + 1
ElseIf CC > CA And CC > CB Then
.Range("G3").Value = .Range("G3").Value + 1
End If
Next i
End With
End Sub
Sub Evaluation()
Dim Value As Long
Dim LastRow As Long
LastRow = Sheet1.Range("A" & Rows.Count).End(xlUp).Row
If (LastRow = 2) Or (LastRow = Sheet2.Range("A1").Value) Then '<= Check if the table has new data
Exit Sub
Else
If Sheet2.Range("A1").Value = "" Then '<=Check which value will adopt be i
Value = 3
Else
Value = Sheet2.Range("A1").Value + 1
End If
End If
Call Process_Data(I_Value:=Value)
Sheet2.Range("A1").Value = Sheet1.Range("A" & Rows.Count).End(xlUp).Row '<= Record the lastrow processed out
End Sub