Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel成绩表_Excel_Comparison_Cell - Fatal编程技术网

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中的图片所示(不要更改结构):

  • 打开Excel
  • 按ALT和F11打开可视化编辑器(&F)
  • 从>插入(在上部工具栏中)-模块(第三个选项)添加模块
  • 粘贴以下代码并执行子评估()(当光标处于子评估时按F5)
  • 为了存储最后一行以便从下一条记录继续,我使用sheet2 range A1
  • 尝试:

    选项显式
    公共子流程_数据(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