4

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

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

Я нашел формулу:

=INDEX($E$1:$CO$1, MATCH(TRUE,INDEX(E2:CO2<>0,),0)) 

Это дает мне самую последнюю транзакцию; он ищет в каждой строке первый ненулевой экземпляр.

Мне нужен ПОСЛЕДНИЙ ненулевой экземпляр. Или, в качестве альтернативы, мне нужно знать, как заставить эту формулу работать справа налево, а не слева направо.

Любая помощь высоко ценится!

2 ответа2

8

Нет необходимости изменять ваши данные, вы можете использовать функцию LOOKUP чтобы найти последний ненулевой и получить заголовок, как это

=LOOKUP(2,1/(E2:CO2<>0),E$1:CO$1)

Это работает, потому что часть 1/(E2:CO2<>0) возвращает массив 1, где ячейка не равна нулю ...... или #DIV/0! ошибки там, где это есть. Затем LOOKUP не найдет 2 в этом массиве, поэтому он совпадает с последним 1, т. Е. Последним столбцом с ненулевым значением ..... и затем возвращает соответствующее значение из строки заголовка.

Если вам действительно нужно последнее число в строке (включая ноль), это еще проще, просто

=LOOKUP(9.99E+307,E2:CO2,E$1:CO$1)

2

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

Предполагая, что данные, которые вы хотели сторнировать, были расширены с A2 до E2:

=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))

Где 6 - ваше количество столбцов (5) + 1. Если вы предпочитаете не использовать жестко закодированное значение (6), как указано в комментариях ко второй ссылке, вы можете использовать что-то вроде COUNTA ($ A $ 2:$ E $ 2) +1. Таким образом, формула будет выглядеть так:

=INDEX($A$2:$E$2,COUNTA($A$2:$E$2)+1-COLUMNS($A2:A2))

Обратите внимание, что формула зависит от конечного значения COLUMNS (начало A2), чтобы получить правильное значение ячейки. Предполагая, что вы копируете и вставляете, вы получите следующую строку ячеек (если вы хотите отобразить все 5 частей данных):

=INDEX($A$2:$E$2,6-COLUMNS($A$2:A2))
[...]
=INDEX($A$2:$E$2,6-COLUMNS(A$2:$E2))

Пример того, как это выглядит:

Reverese_Excel_Data

Включая формулу, чтобы найти первое ненулевое значение:

Excel_Fined_First_Non-Zero_Value

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .