Таблица результатов Excel - PullRequest
       18

Таблица результатов Excel

0 голосов
/ 18 октября 2018

Итак, я не понял, как это сделать.

В принципе, я хочу что-то вроде этого:

P1    P2    P3                TOTAL SCORE
--    --    --                P1   P2   P3
21    /     13                 1    2    0
/     17    10
6      7    /

Итак, три столбца должны сравниваться друг с другом(«/» означает, что игрок не играл в эту игру, но его не нужно печатать), наибольшее из трех получает значение +1 на вкладке ОБЩИЙ СЧЕТ.

ПлюсЕсть ли более простой способ сделать это, чем сравнение одной ячейки с другой ячейкой?Я имею в виду, есть ли возможность перетащить и пометить все ячейки во всех трех столбцах и убедиться, что они сравнивают только ячейки в трех столбцах ОДНОВРЕМЕННО?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Предположим, что данные выглядят так, как показано на рисунке в Листе 1 (не изменять структуру):

enter image description here

  1. ОткрытьExcel
  2. Нажмите ALT & F11, чтобы открыть визуальный редактор
  3. Добавить модуль из> Вставить (в верхней панели инструментов) - Модуль (третий вариант)
  4. Вставить приведенные ниже коды& выполнить вспомогательную оценку () (нажмите F5, когда курсор находится в вспомогательной оценке)
  5. Для сохранения последней строки и продолжения следующей записи я использую диапазон листа 2 A1

Попробуйте:

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
0 голосов
/ 18 октября 2018

Используйте функцию LARGE, чтобы найти наибольшее число для отдельных игр слева.Затем используйте оператор IF справа, чтобы проверить, соответствует ли значение функции LARGE игровому счету игрока.Если он совпадает (TRUE), присвойте ему значение 1. Если он не соответствует (FALSE), присвойте ему значение 0. Затем присвойте СУММУ модификаторы каждого игрока, которые вы назначили с помощью функции IF.

Если в отдельных игровых счетах возможны связи, вам также понадобится использовать другую функцию IF, чтобы справиться с этой возможностью.

...