Макрос для извлечения минимальных / максимальных / средних данных из большого набора данных - PullRequest
1 голос
/ 19 апреля 2019

У меня есть 2 столбца в моем файле Excel, и я хочу получить MIN / Max / Average цены во второй строке на основе информации в первом столбце. я не могу использовать обычную функцию, поскольку в моей книге 200 000 строк.

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

Sub Button1_Click()
Dim Rng As Range, Dn As Range, n As Long, c As Long, K As Variant
Set Rng = Range(Range("A2"), Range("A" & Rows.Count).End(xlUp))
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
Application.ScreenUpdating = False
For Each Dn In Rng
    If Not .Exists(DateValue(Dn.Value)) Then
        .Add DateValue(Dn.Value), Dn.Offset(, 1)
    Else
        Set .Item(DateValue(Dn.Value)) = Union(.Item(DateValue(Dn.Value)), Dn.Offset(, 1))
    End If
Next
Range("E1:H1") = Array("Date", "Max", "Min", "Average")
c = 1
For Each K In .keys
    c = c + 1
    Cells(c, "E") = K
    Cells(c, "F") = Application.Max(.Item(K))
    Cells(c, "G") = Application.Min(.Item(K))
    Cells(c, "H") = Application.Average(.Item(K))
Next K
End With
Application.ScreenUpdating = True


End Sub

MIN / Max / Среднее значений в столбце 2, которые относятся к значениям в столбце 1

1 Ответ

0 голосов
/ 19 апреля 2019

«Нормальные» функции должны работать правильно, независимо от того, сколько у вас строк данных.

Например, я просто дважды проверил функции листа MIN, MAX, AVERAGE, MINIFS, MAXIFS и AVERAGEIFS рассчитаны на столбце из 200 тыс. Строк и зависят от значения другого столбца, и у меня не возникло никаких проблем (с использованием Excel для Office 365).


Пример:

"Среднее значение Column B, где Column A равно 2"

Функция рабочего листа:

=AVERAGEIFS(B:B, A:A, 2)

VBA WorksheetFunction :

MsgBox Application.WorksheetFunction.AverageIfs(Range("B:B"), Range("A:A"), 2)

Возможно, вы используете более старую версию Excel?

Насколько я знаю, все функции / формулы Excel будут работать должным образом до максимального числа строк / столбцов , которое может обрабатывать версия (что составляет 1 048 576 строкна 16 384 столбца , по крайней мере, Excel 2007).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...