Невозможно правильно прочитать значения из листа Excel - PullRequest
0 голосов
/ 10 февраля 2020

Первый вопрос в истории.

Я пишу макрос в Excel 2016, чтобы усреднить результаты опроса. У меня около 130 результатов, от 0% до 100%. Я считаю, что могу получить доступ к ячейкам на листе, но вместо того, чтобы сложить все результаты вместе, вместо этого они учитываются.

Например, при 130 записях я должен получить 130 различных процентных результатов, добавленных вместе к разделить на 130, чтобы получить средний результат.

На самом деле я получаю значение 68 (все 0% не увеличивают счетчик). Я спрашиваю, как извлечь значение из ячейки, когда оно представлено в процентах. Это текстовое поле или форматированное число? Я не смог получить четкий ответ от изучения книги в Excel.

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

В результате я получаю K5, K6 и K7 68, 131 и 101. Я знаю, что средняя функция, вероятно, не то, что я хочу от этого, но это единственная попытка среднее число, которое я нашел, не имеет ошибки. Я пытался создать пользовательскую функцию, но в ней либо говорилось о попытке деления на 0, либо об ошибках переполнения.

Я хотел бы получить большое число, которое представляет собой все результаты теста, сложенные вместе, а затем разделенные на 131, чтобы получить значение, где 101.

Я новичок в VBA, только пару недель, и я уверен, что в этом коде есть некоторые плохие практики. Я надеюсь, что вы можете указать мне в правильном направлении. Спасибо за чтение.

Вот код, который я написал:

' Sets i = 1
i = 1

'Start of Do While Loop
Do

    ' If cell contains Test 1 and is not Empty
    If Cells(i, 7).Value2 = "Test 1" And Not IsEmpty(Cells(i, 7).Value2) Then

        If total_Test1 = 0 And count_Test1 = 0 Then

            ' Get Test Score from two cells to the right and set it equal to total.
            total_Test1 = ActiveSheet.Cells(i, 9).Value2
            ' Set count equal to 1.
            count_Test1 = 1

        End If

        ' Get Test Score from two cells to the right and add to previous total.
        total_Test1 = total_Test1 + ActiveSheet.Cells(i, 9).Value2
        ' Increment count.
        count_Test1 = count_Test1 + 1

    End If

' Increment i.
i = i + 1

' Run the loop for 10000 rows.
Loop Until i > 10000

' Cell K5 is set equal to the total.
Cells(5, 11).Value = total_Test1 
' Cel K6 is set equal to the count.
Cells(6, 11).Value = count_Test1 

' Create Range1 as a range.
Dim Range1 As Range

' Set range1 equal to K5 to K6.
Set Range1 = Range("K5:K6")
' Uses the Average function of excel to get average value of range.
Cells(7, 11).Value = Application.average(Range1)```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...