Подсчет строк в нескольких столбцах слева направо, пока не будут выполнены определенные критерии - PullRequest
0 голосов
/ 03 июня 2019

У меня есть следующая таблица ниже. Я буду ссылаться на конкретный номер на основе другой посторонней информации. Допустим, конкретное число равно 30. Сначала мне нужно посчитать 30 чисел в моем сентябрьском списке, затем перейти к октябрю, затем к ноябрю, пока счет не достигнет 30. Затем мне нужно посчитать все пропущенные значения, пока следующее значение не достигнет 30-го числа из предыдущее задание Так что для этого примера 30-е число будет 19 ноября. Количество пропавших без вести должно быть 55, 15 ноября (если я посчитал это право). Это значение будет сохранено в ячейке.

Я получил пропущенные дни по следующей формуле: =IFERROR(SMALL(IF(ISERROR(MATCH(ROW(L$1:INDEX(L:L,N$2)),M$2:INDEX(M:M,COUNT(M:M)+ROW(M$1)),0)),ROW(L$1:INDEX(L:L,N$2))),ROW()-ROW(L$1)),"") (см. Таблицу 2 для справки по столбцу)

Максимальное значение столбца будет пустым, если в столбце месяца нет данных, поэтому в пропущенном столбце также не будет данных. Я установил это с помощью следующей формулы: =IF(COUNTA(M:M)>1,31,"") (см. Таблицу 2 для справки по столбцу)

    Table 1    
   September max  missed  October  max   missed   November  max  missed
    1        30   4        1       31    2        2         30   1
    2             6        3             6        7              3
    3             7        4             7        9              4
    5             11       5             8        10             5
    8             12       12            9        11             6
    9             13       15            10       16             8
    10            14       20            11       17             12
    15            16       28            13       18             13
    22            17       30            14       19             14
    23            18       31            16       20             15
    24            19                     17       22             21
    25            20                     18       27             23
    29            21                     19       28             24
                  26                     21                      25
                  27                     22                      26
                  28                     23                      29
                  30                     24                      30
                                         25
                                         26
                                         27
                                         29

    Table 2
    L               M             N         O
    (blank)         September     max       missed

Я имею представление о том, как написать это, но не знаю синтаксис:

    x = Select(Range("G8").Value)    
    'value that holds specific value (30 for above example)

    If x < 31 Then
    '30 days in September

            y = Count(M2:M32) Until = x
            'values in September

            z = Count(O2:O32) Until = value of y - 1
            'What if the last value is the 30th of September, how would you stop on August 31st?

            Range("A1").Value = z
            'value of z is stored in cell A1

                    Elseif x < 62 Then
                    '61 days in September and October

                    y2 = Count(M2:M32) & Count(Q2:Q32) Until = x
                    'Values in September and October

                    z2 = Count(R2:R32) & (S2:S32) Until =value of -1
                    'Again, if the last value is the 31st of October how would you stop on September 30th?

                    Range("A1").Value = z
                    'Value of z is stored in cell A1

                           Elseif
                           'continue for each month (12 times)

    End If

Есть несколько вещей, которые могут вызвать некоторые проблемы с моими предложениями (о которых я только что подумал). Как бы я продиктовал мой начальный месяц? Допустим, я хотел сослаться на конкретную ячейку, и эта ячейка содержит число 4. Поэтому я хотел бы начать в апреле, даже если бы у меня были данные в марте. Другой способ думать об этом - март в 2019 году, а апрель - в 2018 году. Так как же я мог заставить код перейти с декабря на январь? Скажем, столбец Z - декабрь, а столбец A - январь. Я бы не хотел, чтобы мой код читался только слева направо. Он должен был бы начать со ссылкой на другую ячейку, а затем вернуться к началу, если год изменится.

Я извиняюсь за длительность, но это мое лучшее объяснение. Дайте мне знать, если у вас есть какие-либо вопросы или я могу предоставить кому-либо еще пример, фотографии и т. Д.

1 Ответ

0 голосов
/ 03 июня 2019

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

Day        Status
01.09.2018 ok
02.09.2018 ok
03.09.2018 ok
04.09.2018 missed
05.09.2018 ok
06.09.2018 missed
07.09.2018 missed
08.09.2018 ok
09.09.2018 ok
10.09.2018 ok
11.09.2018 missed
12.09.2018 missed
13.09.2018 missed
14.09.2018 missed
15.09.2018 ok
16.09.2018 missed
17.09.2018 missed
18.09.2018 missed
19.09.2018 missed
20.09.2018 missed
21.09.2018 missed
22.09.2018 ok
23.09.2018 ok
24.09.2018 ok
25.09.2018 ok
26.09.2018 missed
27.09.2018 missed
28.09.2018 missed
29.09.2018 ok
30.09.2018 missed
01.10.2018 ok
02.10.2018 ok
03.10.2018 ok
04.10.2018 ok
05.10.2018 ok
06.10.2018 ok
07.10.2018 ok
08.10.2018 ok
09.10.2018 ok
10.10.2018 ok
11.10.2018 ok
12.10.2018 ok
13.10.2018 ok
14.10.2018 ok
15.10.2018 ok
16.10.2018 ok
17.10.2018 ok
18.10.2018 ok
19.10.2018 ok
20.10.2018 ok
21.10.2018 ok
22.10.2018 ok
23.10.2018 ok
24.10.2018 ok
25.10.2018 ok
26.10.2018 ok
27.10.2018 ok
28.10.2018 ok
29.10.2018 ok
30.10.2018 ok
31.10.2018 missed

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

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