Arrayformula, чтобы найти следующее значение для критериев в Google Sheets - PullRequest
1 голос
/ 07 февраля 2020

На моих листах есть вкладка "Ответы на форму", где я собираю информацию, содержащую начальную дату, метку и имя. Я хочу создать формулу массива, которая заполнит последний столбец датой и временем для следующей записи имени в наборе данных. Я хочу избежать необходимости отправки конечной отметки sh datetime.

Я пытался

=ARRAYFORMULA(if(A:A="","",vlookup(C:C,{C2:C20,A2:A20},2,false))) 

, надеясь, что формула массива изменит диапазон поиска при заполнении дальнейших строк, но это не так t.

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

        Now


+---------------------+--------------+--------+
|      Timestamp      | Group number | Picker |
+---------------------+--------------+--------+
| 29/01/2020 21:31:45 |         3001 | Ben    |
| 30/01/2020 19:42:20 |         3002 | Ben    |
| 30/01/2020 20:04:51 |         3006 | Jon    |
| 30/01/2020 20:05:08 |         3018 | Jon    |
| 30/01/2020 22:31:45 |         3019 | Ben    |
| 31/01/2020 23:31:45 |         3020 | Jon    |
| 01/02/2020 21:31:45 |         3021 | Ben    |
+---------------------+--------------+--------+





    Expected



+---------------------+--------------+--------+---------------------+
|      Timestamp      | Group number | Picker |    ARRAYFORMULA     |
+---------------------+--------------+--------+---------------------+
| 29/01/2020 21:31:45 |         3001 | Ben    | 30/01/2020 19:42:20 |
| 30/01/2020 19:42:20 |         3002 | Ben    | 30/01/2020 22:31:45 |
| 30/01/2020 20:04:51 |         3006 | Jon    | 30/01/2020 20:05:08 |
| 30/01/2020 20:05:08 |         3018 | Jon    | 31/01/2020 23:31:45 |
| 30/01/2020 22:31:45 |         3019 | Ben    | 01/02/2020 21:31:45 |
| 31/01/2020 23:31:45 |         3020 | Jon    |                     |
| 01/02/2020 21:31:45 |         3021 | Ben    |                     |
+---------------------+--------------+--------+---------------------+

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Наконец-то выяснили, как это сделать с помощью нового трюка, о котором я подумал, для этих типов поиска.

Я понимаю, что @ player0 уже отлично на это ответил! Но это тоже должно сработать, и другие подобные типы поиска, если кто-то наткнется на это в будущем:

=ARRAYFORMULA({"Arrayformula";IFERROR(-1/(1/(SUBSTITUTE(LOOKUP(C2:C&9^9-A2:A-0.0001,SORT(C2:C&9^9-A2:A)),C2:C,"")-9^9)))})
0 голосов
/ 07 февраля 2020

попробовать:

={""; ARRAYFORMULA(IFNA(VLOOKUP(C2:C, SORT({C2:C, A2:A}, 2, 0), 2, 0)))}

enter image description here


ОБНОВЛЕНИЕ:

={"ARRAYFORMULA"; ARRAYFORMULA(IFNA(VLOOKUP(
         C2:C&COUNTIFS(C2:C, C2:C, ROW(C2:C), "<="&ROW(C2:C))+1, 
 FILTER({C2:C&COUNTIFS(C2:C, C2:C, ROW(C2:C), "<="&ROW(C2:C)), A2:A}, 
 ROW(C2:C)-MATCH(C2:C, C2:C, 0)<>1), 2, 0)))}

0

...