Использование запроса в таблице Google для получения желаемого результата на основе некоторых фильтров

Мне нужно сгенерировать отчет с помощью запроса.

Данные выглядят следующим образом:

Model   SerialNumber    IdentityNumber    Status       EmployeeID
Lenovo  12abc           L-001             Issued        E-50
Apple   13abc           M-001             Issued        E-50
Lenovo  12abc           L-001             InStock       E-50
Lenovo  12abc           L-001             Issued        E-51
Lenovo  12abc           L-001             InStock       E-51
Lenovo  12abc           L-001             Issued        E-50

Критериями фильтрации являются идентификатор сотрудника, состояние запасов и идентификационный номер. Как упоминалось выше, идентификационный номер L-001 выдан empolyeeid E-50, и через некоторое время сотрудник (E-50) вернет этот актив, поэтому текущие активы с сотрудником - это только вторая строка M-001. Мне нужно получить эти данные с помощью запроса в листе Google.

Я получил результат после создания дополнительного столбца, в котором я обновил этот столбец с помощью 0 и 1. если актив есть в наличии, чем 1, иначе 0. Но в этом решении мне нужно обновить дополнительный столбец для 1-й строки, а также с флагом 1 на время. когда сотрудник вернет актив. как показано ниже:

Model   SerialNumber    IdentityNumber    Status       EmployeeID    Flag
Lenovo  12abc           L-001             Issued        E-50         1
Apple   13abc           M-001             Issued        E-50         0
Lenovo  12abc           L-001             InStock       E-50         1

Есть ли какое-то решение для получения желаемого результата без использования дополнительной колонки?


person user3244104    schedule 28.07.2020    source источник
comment
поделитесь копией своего листа   -  person player0    schedule 28.07.2020
comment
его примерные данные и структура такие же.   -  person user3244104    schedule 28.07.2020
comment
какие формулы вы использовали для флага?   -  person player0    schedule 28.07.2020
comment
= QUERY (A1: F, выберите A, B, C, D, E, где E = 'E-50' и F = 0)   -  person user3244104    schedule 28.07.2020
comment
Проблема в том, что мне пришлось обновить флаг как 1, когда я выпустил этот актив, а не только тогда, когда актив был возвращен сотрудником. Я надеюсь, ты понял мою точку зрения   -  person user3244104    schedule 28.07.2020


Ответы (1)


пытаться:

=ARRAYFORMULA(QUERY({A:E, {""; IF(A2:A="",,IF(ISEVEN(IFNA(
 VLOOKUP(A2:A&B2:B&C2:C, SORT({A2:A&B2:B&C2:C, IF(A2:A="",,
 COUNTIFS(A2:A&B2:B&C2:C, A2:A&B2:B&C2:C, 
 ROW(A2:A), "<="&ROW(A2:A)))}, 2, 0), 2, 0))), 1, 0))}}, 
 "select Col1,Col2,Col3,Col4,Col5 
  where Col5 = 'E-50' 
    and Col6 = 0", 1))

введите описание изображения здесь


исправить:

=ARRAYFORMULA({A1:E1; QUERY(ARRAY_CONSTRAIN(SORTN(SORT({A2:F, 
 IF(ISEVEN(VLOOKUP(A2:A&B2:B&C2:C&E2:E, SORTN(SORT({A2:A&B2:B&C2:C&E2:E, IF(A2:A="",, 
 COUNTIFS(A2:A&B2:B&C2:C&E2:E, A2:A&B2:B&C2:C&E2:E,  ROW(A2:A), "<="&ROW(A2:A)))}, 2, 0), 
 99^99, 2, 1, 0), 2, 0)), 1, 0), VLOOKUP(A2:A&B2:B&C2:C&E2:E, 
 SORTN(SORT({A2:A&B2:B&C2:C&E2:E, IF(A2:A="",, 
 COUNTIFS(A2:A&B2:B&C2:C&E2:E, A2:A&B2:B&C2:C&E2:E,  ROW(A2:A), "<="&ROW(A2:A)))}, 2, 0), 
 99^99, 2, 1, 0), {2, 1}, 0), ROW(A2:A)}, 10, 0, 8, 0), 99^99, 2, 9, 0), 99^99, 7), 
 "select Col1,Col2,Col3,Col4,Col5 where Col5 = 'E-50' and Col7 = 0", 0)})

0

person player0    schedule 28.07.2020
comment
Я добавил дополнительные образцы данных, формула отлично работает с данными, предоставленными ранее. Теперь сценарий изменил актив L-001, выданный другому лицу E-51, и E-51 вернул актив L-001 после работы в строках 4 и 5. Теперь L-001 выдан предыдущему лицу E-50, в этом случае какая формула должна быть использовать. Ожидаемый результат - только строки 2 и 6 - person user3244104; 28.07.2020
comment
docs.google.com/spreadsheets - person user3244104; 28.07.2020
comment
пожалуйста, проверьте ссылку на лист, указанную выше - person user3244104; 28.07.2020
comment
Привет, это мне очень помогло, я добавил еще 1 лист в этот файл Google, мне нужно обновить складской лист, имя столбца статус stockstatus должно быть в наличии / выдано автоматически с использованием формулы, которая проверяет лист транзакции с общим серийным номером поля, в обоих листы для правильного обновления статуса. формула должна обновлять статус, если актив, основанный на вашем предыдущем решении, выпущен в листе транзакции - person user3244104; 18.01.2021