Найти самую раннюю запись в таблице - PullRequest
0 голосов
/ 15 апреля 2020

Рассмотрим следующую таблицу сотрудников.

employees

Это довольно просто, верно? Часы, когда вы начинаете, часы на обед, часы после обеда, часы, когда вы уходите. Но может кто-нибудь сказать мне, во сколько на самом деле начали работать эти сотрудники? Например, как бы вы go сказали, что Том был здесь в 6:51, а не в 12:23?

. У них есть по крайней мере 4 записи, (некоторые, без ланча).

Как мне go написать формула, которая возвращает время начала?

Я отредактировал таблицу и добавил вспомогательный столбец для даты. См. Ниже.

ОТВЕТ:

=AGGREGATE(15,6, $C$2:$C$7/((A11=$A$2:$A$7)*(B11=$B$2:$B$7)),1)

with date

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Если рабочее время в течение дня, вы можете искать наименьшее время. Если в полночь происходит ночная смена, то возникает проблема ...

=AGGREGATE(15,6,(1/($A$2:$A$5=A2)*(INT(B2)=INT($B$2:$B$5)))*($B$2:$B$5),1)

enter image description here

0 голосов
/ 15 апреля 2020

Я записал эту формулу для диапазона E2:

=IF(AND(A2=A3,TRUNC(B2,0)-TRUNC(B3,0)=0),MIN(B2,B3),IF(AND(IFERROR(TRUNC(B2)-TRUNC(B1)=0,FALSE),E1=MIN(B2,B1)),"",B2))"

Поскольку engli sh не является моим языком по умолчанию в Excel, я просто перевел его вручную. Во всяком случае, на всякий случай, вот код VBA для вставки его в диапазоне E2:

Range("E2").FormulaR1C1 = "=IF(AND(RC[-4]=R[1]C[-4],TRUNC(RC[-3],0)-TRUNC(R[1]C[-3],0)=0),MIN(RC[-3],R[1]C[-3]),IF(AND(IFERROR(TRUNC(RC[-3])-TRUNC(R[-1]C[-3])=0,FALSE),R[-1]C=MIN(RC[-3],R[-1]C[-3])),"""",RC[-3]))"

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

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