Excel - возвращает ячейку в строке, только если несколько критериев из текущей строки совпадают - PullRequest
0 голосов
/ 26 июня 2019

У меня есть таблица транзакций с уникальными идентификаторами.

Для каждой транзакции могут быть две соответствующие строки - одна инициирующая, другая выполняющая.

Поскольку поступает новая информация, я хочу найти исходные строки, если текущая строка выполняет. Поскольку они будут иметь разные идентификаторы, единственный способ сопоставить их - по сумме, типу, номеру счета и дате транзакции.

Каждый из критериев не уникален. Например, может быть много транзакций на сумму 500 долларов.

В результате я хочу написать формулу, которая возвращает идентификатор транзакции, если и только если все эти критерии соответствуют строке в электронной таблице.

Я пытался работать с массивами, думая, что я могу умножить их, так как они будут либо 0, либо 1, а продукт будет равен 1, если все критерии соответствуют, но не смог заставить его работать, так как он просто вернет одно значение вместо массива значений.

Таким образом, электронная таблица имеет следующую структуру:

ID | Account Number | Transaction Date | Amount | Customer | Fulfilling order ID?    |
1 |     123456      |     06/26/2018   |   50   |   John   |                         |
2 |     123457      |     07/25/2018   |   55   |   Steve  |                         |
3 |     123456      |     06/26/2019   |   50   |   John   |         1               |
4 |     124588      |     07/25/2019   |   75   |   Rich   |                         |
5 |     125589      |     08/01/2019   |   80   |   Vincent|                         |

Я хочу иметь возможность написать что-то, что будет возвращать 1 для идентификатора заказа 3, поскольку оно выполняет идентификатор заказа 1.

1 Ответ

2 голосов
/ 26 июня 2019

Конечно, вы можете использовать динамические диапазоны в формулах массива, поэтому вам не нужно вручную изменять диапазоны при вводе данных.

Что-то в ячейке F2 по строкам:

=INDEX(A:A,MATCH(1,($B$1:INDEX(B:B,COUNTA(B:B))=B2)*($C$1:INDEX(C:C,COUNTA(C:C))=C2)*($D$1:INDEX(D:D,COUNTA(D:D))=D2)*($E$1:INDEX(E:E,COUNTA(E:E))=E2),0))

Введено в виде массива через Ctrl Shift Ввести , не будет работать?

Примечание В вашем примере он никогда не вернет 1, а просто 3 просто потому, что критерии не совпадают (столбец c, даты разные).Как только они совпадают, формула работает.

enter image description here

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