Частично проблема, с которой вы можете столкнуться, это даты. Убедитесь, что ваши даты превосходны, а не строка / текст, который выглядит как дата. Простое изменение форматирования ячейки не делает ее датой, она просто говорит Excel, как попытаться отобразить информацию в ячейке.
Даты в Excel хранятся в виде целых чисел, и они представляют дни с 1900/1/1, причем эта дата является днем 1. Один из самых простых способов проверить, содержит ли ячейка дату или строку:
=ISTEXT(A1)
or
=ISNUMBER(A1)
Where A1 is the cell with the date to be tested.
Если он возвращает TRUE для первой формулы, это строка / текст. ЛОЖЬ означает, что это число. Противоположные результаты ИСТИНА и ЛОЖЬ применяются ко второй формуле.
В вашей формуле, когда между кавычками есть "", это будет интерпретироваться как строка. ТАК что-то вроде "<=19/05/26"
означает, что он ищет строку меньше этого, а не дату меньше этого. Для сравнения дат либо объедините сравнение текста с ячейкой, содержащей дату для сравнения, с "<="&B2
, где B2
содержит дату, либо, если вы хотите жестко закодировать ее, используйте что-то вроде "<="&Date(19,05,26)
Чтобы следующее решение работало, все ваши даты должны быть сохранены в виде числа. Серийный формат даты АКА Excel.
На основе данных, размещенных в соответствии с изображением ниже, вы можете использовать COUNTIFS, INDEX и MATCH, чтобы получить дату, которую вы ищете. Я рекомендую найти ваши D и N отдельно и сложить их вместе для общего количества. Тем не менее, если вы хотите получить решение в виде одной ячейки, это может быть достигнуто, а также продемонстрировано результатами в столбце N. Однако формула начинает становиться длинной и может быть трудной для потенциального чтения / поддержки на более позднем этапе.
Ядром решения будут функции COUNTIFS. Формат функции COUNTIFS выглядит следующим образом:
COUNTIFS(Range to count 1, Criteria 1, Range to count 2, Criteria 2,...,Range to count n, Criteria n)
Давайте начнем строить вашу формулу по одному критерию за раз. Первыми критериями будут все даты, которые больше или равны дате начала. Если вы хотите, чтобы даты были только после даты, отбросьте знак равенства или критерии.
=COUNTIFS($A$2:$A$4,">="&$G2,
Обратите внимание на $, чтобы заблокировать ссылки на ячейки. Это делается для того, чтобы при копировании формулы ссылки на столбцы или строки рядом с $ не изменялись.
Тогда второй критерий аналогичен первому, за исключением того, что вы хотите получить все даты, меньшие или равные сквозной дате. Снова добавьте / бросьте знак равенства в соответствии с вашими потребностями.
=COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,
Следующим критерием будет получение всех ячеек, которые соответствуют D или N заголовка столбца. Давайте просто сосредоточимся на D на данный момент. Задача состоит в том, чтобы определить, какой столбец искать. На данный момент давайте вызовем столбец для просмотра в XXX, и формула станет такой:
=COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,XXX,J$1)
OR
=COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,XXX,"="&J$1)
NOTE: both formulas are the same. When no comparison operator is provided
it is taken as "=" by default.
Теперь, чтобы определить XXX, INDEX и MATCH будут вашими друзьями. Важное замечание по поводу INDEX заключается в том, что он не возвращает непосредственно значение ячейки, а вместо этого возвращает адрес ячейки, который, в свою очередь, возвращает значение ячейки. Основной формат INDEX:
INDEX(Range to look in, Range's ROW to look in, Range's COLUMN to look in)
Это для двухмерного диапазона. Если ваш диапазон является 1-мерным, либо просто столбец, либо просто строка, то необходимо указать только второй аргумент «Строка диапазона ...», и он показывает, как далеко вниз идет список.
Что интересно в 2D INDEX, так это то, что когда для просмотра ROW или столбца указывается 0, вместо того, чтобы выдавать ошибку, он возвращает все строки или столбцы. ЭТО ВАЖНО, потому что вы хотите, чтобы все строки были только в 1 конкретном столбце. Это означает, что ваша формула INDEX начнет выглядеть следующим образом:
INDEX($B$2:$E$4,0,SPECIFIC COLUMN NUMBER)
Так что теперь вам нужно найти конкретный номер столбца. Вот где МАТЧ будет твоим другом. MATCH принимает следующий формат:
MATCH(Value to find, 1D range to look in, what type of search)
Вы уже знаете, что попытаетесь сопоставить свой столбец сдвига, чтобы это было вашим значением для поиска, а диапазон для поиска будет заголовками вашего столбца.Тип поиска, который вам понадобится в этом случае, - это точное совпадение, которое представлено 0. Это означает, что ваша формула MATCH будет выглядеть так:
MATCH($I2,$B$1:$E$1,0)
Теперь, чтобы объединить различные части, бросьте формулу MATCH вваш ИНДЕКС и замените "УКАЗАННАЯ КОЛОННА ...".Ваш ИНДЕКС теперь будет выглядеть следующим образом:
INDEX($B$2:$E$4,0,MATCH($I2,$B$1:$E$1,0))
И приведенная выше формула теперь может заменить XXX в вашей формуле COUNTIFS, и вы получите:
=COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,INDEX($B$2:$E$4,0,MATCH($I2,$B$1:$E$1,0)),J$1)
Поместите приведенную выше формулу в J2 ископируйте ячейку вниз и вправо.
В L2 используйте одну из двух формул, чтобы получить общее значение D и N в диапазоне дат:
=SUM(J2:K2)
OR
=J2+K2
Теперь, чтобы получить формулувсе в одной клетке, посмотрите на вторую формулу выше.Вы можете просто перейти к содержимому ячейки J2 и скопировать всю формулу.Затем отредактируйте ячейку L2 и замените ссылку на ячейку для J2 на скопированную формулу.Повторите процесс, скопировав формулу в K2 и заменив ссылку на K2 в L2.Вы получите формулу, которая выглядит следующим образом:
=COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,INDEX($B$2:$E$4,0,MATCH($I2,$B$1:$E$1,0)),J$1)+COUNTIFS($A$2:$A$4,">="&$G2,$A$2:$A$4,"<="&$H2,INDEX($B$2:$E$4,0,MATCH($I2,$B$1:$E$1,0)),K$1)
Гораздо длиннее и сложнее для чтения, поэтому я рекомендую разбить формулу на части для D и N отдельно.
Теперь в качестве альтернативного метода вы можете использовать SUMPRODUCT и переходить к операциям с массивами.Ваша формула SUMPRODUCT для размещения в I2 и копирования вниз и вправо может быть:
=SUMPRODUCT(($A$2:$A$4>=$G2)*($A$2:$A$4<=$H2)*(INDEX($B$2:$E$4,0,MATCH($I2,$B$1:$E$1,0))=J$1))