Индекс Excel для проверки даты начала и даты окончания и всех дат между ними - PullRequest
0 голосов
/ 05 мая 2020

Excel2019 и Excel онлайн

У меня есть таблица с утвержденным отпуском для моей команды, которая имеет следующий формат:

Table name: leave_data
Name | start date | end date | leave type
emp1 | 4/1        |  4/3     | V

...

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

month: April

name | 4/1 | 4/2 | 4/3 | ... | 4/30
emp1          

, и я хочу, чтобы результат был:

name | 4/1 | 4/2 | 4/3 | ... | 4/30
emp1 |   V | V   |  V

Я пробовал использовать эту формулу:

= (ИНДЕКС (leave_data [[Leave Type]: [Leave Type]], SUMPRODUCT (- (leave_data [[Name]: [Name]] = emp1), - (leave_data [[Дата начала ]: [Дата начала]] <= B $ 2), - (leave_data [[End Date]: [End Date]]> = B $ 2), ROW (leave_data [[Leave Type]: [Leave Type]]) - ROW (leave_data [#Headers])))

и, похоже, он работает, но начинает вести себя странно, когда в таблице leave_data много записей. Также открыт для других решений, но в конечном итоге мне нужна формула I. можно перетаскивать по горизонтали, что поместит запись leave_data [тип отпуска] во все даты (столбцы) между leave_data [дата начала] и leave_data [дата окончания].

Спасибо в adv

1 Ответ

1 голос
/ 05 мая 2020

Это та формула, которую вы хотите. Он предназначен для ячейки B12 и может копироваться оттуда как по горизонтали, так и по вертикали. Обратите внимание, что это формула ошибки, и ее необходимо подтвердить с помощью Ctl + Shift + Введите .

=IFERROR(INDEX(leave_data,MATCH(1,(leave_data[Name]=$A12)*(leave_data[Start Date]<=B$11)*(leave_data[End Date]>=B$11),0),4),"")

[A10 =] Month:
[B10] = 1/4/2020 with cell format `mmmm` (to display "April")
[A11 =] Name
[B11] =B10
[C11] =IF(MONTH(B11+1)=MONTH($B$10),B11+1, "")
[B11:C11] cell format = `dd/mm` to display "01/04"
[C11] - copy across to AF
[A12 =] First employee name: More names below in column A
[B12 =] Above formula. Copy across down as far as you have names in column A
[B12:B?] Copy across to AF

Вам придется отрегулировать строки, но это та установка, которую я тестировал. Дело в том, что вы не можете скопировать формулу массива из B12 в B12: AF12 (включая исходную ячейку). Поэтому сначала вы вводите формулу с помощью Ctl + Shift + Enter , а затем сначала копируете ячейку вниз, а на третьем шаге копируете столбец через .

...