У меня есть следующая таблица ниже. Я буду ссылаться на конкретный номер на основе другой посторонней информации. Допустим, конкретное число равно 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 - январь. Я бы не хотел, чтобы мой код читался только слева направо. Он должен был бы начать со ссылкой на другую ячейку, а затем вернуться к началу, если год изменится.
Я извиняюсь за длительность, но это мое лучшее объяснение. Дайте мне знать, если у вас есть какие-либо вопросы или я могу предоставить кому-либо еще пример, фотографии и т. Д.