Как я могу фильтровать, сравнивая столбец с его собственными элементами строки - PullRequest
1 голос
/ 28 января 2020

У меня есть куча данных, которые помещаются в лист Google на каждой строке. Каждая строка имеет ссылочный номер (COL A) и дату (COL D). Для каждого ссылочного номера я хочу найти последнюю обновленную строку. Это необходимо сделать с помощью массива формул.

Check this image to clarify

Пока у меня есть комбинация формулы массива и фильтра. Однако он не работает должным образом, так как один из аргументов фильтра - A2: A = A2: A. Очевидно, это всегда так. Я хочу сравнить A2: A = A2 для строки 2, затем сравнить A2: A = A3 для строки 3 et c. Без перетаскивания. Поскольку данные растут автоматически

=arrayformula(if(len(A2:A),max(filter({D2:D},A2:A=A2:A)),))

https://docs.google.com/spreadsheets/d/16pbGiisFcsrHfrFKowzzkpw03Lw79yACjut96xxyWW4/edit?usp=sharing

Ответы [ 2 ]

2 голосов
/ 28 января 2020

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

={"Last Update"; 
 ARRAYFORMULA(IFNA(VLOOKUP(A2:A; SORT({A2:A\ D2:D}; 2; 0); 2; 0)))}

0

1 голос
/ 28 января 2020

Вы можете вставить эту формулу в F2, а затем перетащить ее вниз.

=QUERY($A$2:$E,"SELECT D WHERE A = '"&A2&"' ORDER BY D desc LIMIT 1")


=ARRAYFORMULA(MAX(FILTER({$D$2:$D},$A$2:$A=A2)))

* Редактирование: Попробуйте эту формулу в F2, и нет необходимости перетаскивать ее вниз:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A,QUERY(QUERY($A$2:$E,"SELECT A, max(D) WHERE A <> '' GROUP BY A"),"SELECT * OFFSET 1",0),2,FALSE),""))

Возможно, вы дадите столбцу F формат даты, но это один раз. Удачи:)

...