Получить координаты строки-столбца всех совпадений в таблице Excel - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть таблица дат и переменный диапазон дат, и мне нужно найти все совпадения для строк и столбцов, где дата в таблице лежит в диапазоне моего диапазона дат начала / окончания.

В качестве (уменьшенного) примера моего случая:

Start date: 01Jan2018
End date: 30Jun2018

Таблица с датами:

{01Jan2018; 01Feb2018; 01Apr2018}
{17Mar2018; 05Jun2018; 16Aug2018}
{11Apr2018; 01Jul2018; }

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

=--(array>=start_date)*(array<=end_date)

который вывел бы

{1;1;1}
{1;1;0}
{1;0;0}

Но каков следующий шаг, чтобы перейти отсюда к вертикальному списку наборов строк-столбцов, где номер строки и столбца находится в отдельных ячейках? Из приведенного выше примера мне нужен список вроде:

1 1
2 1
3 1
1 2
2 2
1 3

У меня есть другие массивы размером с массив дат, с которым мне нужно сопоставить найденные координаты, чтобы найти другие данные, используя найденные координаты.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Исходя из размера вашего массива, вам нужно создать список всех координат (формулы для его генерации в конце поста). Затем возьмите значение из этой координаты, проверьте соответствие своему условию (столбец "C") и отфильтруйте где TRUE (столбец "D"). data

И с формулами показано: formulas

Результат (выделен зеленым):

result

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

A9: =IF(B9="end";"end";MOD(ROW(C1)-1+COLUMNS($A$1:$C$3);COLUMNS($A$1:$C$3))+1)
B9: =IF(1+INT((ROW(C1)-1)/COLUMNS($A$1:$C$3))>COLUMNS($A$1:$C$3);"end";1+INT((ROW(C1)-1)/COLUMNS($A$1:$C$3)))
0 голосов
/ 02 ноября 2018

Немного длинной формулы, но в основном эта формула будет:

  1. Получить соответствующую дату, используя индекс (на основе строки ()) и матрицы (3x3)
  2. Преобразование в 1 & 0 в зависимости от того, находится ли он между датами
  3. Возвращает номер столбца / строки, если 1

Для столбца:

=IF(--(INDEX($A$4:$C$6,ROUNDUP((ROW()-1)/3,0),IF(MOD((ROW()-1),3)=0,3,MOD((ROW()-1),3)))>=$B$1)*(INDEX($A$4:$C$6,ROUNDUP((ROW()-1)/3,0),IF(MOD((ROW()-1),3)=0,3,MOD((ROW()-1),3)))<=$B$2)<>0,ROUNDUP((ROW()-1)/3,0),"n/a")

Для строки:

=IF(--(INDEX($A$4:$C$6,ROUNDUP((ROW()-1)/3,0),IF(MOD((ROW()-1),3)=0,3,MOD((ROW()-1),3)))>=$B$1)*(INDEX($A$4:$C$6,ROUNDUP((ROW()-1)/3,0),IF(MOD((ROW()-1),3)=0,3,MOD((ROW()-1),3)))<=$B$2)<>0,IF(MOD((ROW()-1),3)=0,3,MOD((ROW()-1),3)),"n/a")

Изображение решения Excel

0 голосов
/ 01 ноября 2018

Попробуйте:

=IF(AND(A4>=$B$1,A4<=$B$2),"In","Out")

Результаты:

enter image description here

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