Как получить различные значения диапазона с двумя критериями в Excel с формулой или VBA? - PullRequest
1 голос
/ 28 апреля 2020

У меня есть столбец с примерно 16 тысячами строк с повторяющимися датами, в котором следует искать число уникальных дат между неделями. Здесь SHEET WMR in the code - это лист, в котором уникальные значения должны храниться в строке ДНИ № 8, а над ним - даты, которые должны использоваться в качестве условий. Я пробовал формулу массива Sum / countifs, но я получил с 0 Ошибка Затем я попытался это l oop

Dim WMR, MHR, P, D As Worksheet

Set WMR = Sheets("WMREP")
Set MHR = Sheets("MACH-HRS")
Set P = Sheets("PRODUCTION")
Set D = Sheets("DELAYS")

Dim last_row, last_row1, last_row2 As Long
last_row = MHR.Cells(Rows.Count, 1).End(xlUp).Row
last_row1 = P.Cells(Rows.Count, 1).End(xlUp).Row
last_row2 = D.Cells(Rows.Count, 1).End(xlUp).Row
counter = 1

For x = 8 To 11
    For y = 3 To last_row1
        If P.Cells(y, 1) >= WMR.Cells(7, x - 1) And P.Cells(y, 1) < WMR.Cells(7, x) Then
            If P.Cells(y, 1) <> P.Cells(y - 1, 1) Then
                counter = counter + 1
            End If
        End If
    Next y
    WMR.Cells(8, x) = counter
    counter = 0
Next x

Но он возвращает значения больше 7, и это не правильно. Я застрял с этим. Будет приветствоваться решение формулы или VBA.

Sheet P in the code

1 Ответ

2 голосов
/ 28 апреля 2020

Ну, если бы у вас был доступ к DA-функциям, это было бы довольно просто:

=COUNT(UNIQUE(FILTER(Sheet2!$A2:$A16000,Sheet2!$A2:$A16000>G7-1,Sheet2!$A2:$A16000<G7+7)))

Но не имея доступа к ним, вы могли бы попробовать:

=SUM(--(FREQUENCY(IF((Sheet2!$A2:$A16000>G7-1)*(Sheet2!$A2:$A16000<G7+7),Sheet2!$A2:$A16000),Sheet2!$A2:$A16000)>0))

Примечание: Этот второй параметр необходимо подтвердить с помощью Ctrl Shift Введите . Обе опции можно поместить в G7 на листе 1 и перетащить вправо.

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

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