2016-03-31 3 views
1

У меня есть набор данных, который выглядит как пример ниже. Я хочу вывести список последних десяти транзакций, упорядоченных по дате транзакции, при захвате всех столбцов информации в исходном наборе данных; и я хочу сделать это, только если продавец - Джимми.Использование Если большое заявление и заполнение остатка таблицы в Excel

Я в тупике. Есть идеи, как это сделать?

Пример набора данных ниже:

Customer Name Customer Group Salesman Transaction Date 
    Sam     1   Jimmy  3/21/2015 
    Jill     2   Johnny 3/21/2015 
    Scott     3   Joanny 3/21/2015 
    Sean     4   Slippy 3/24/2015 
    Dave     5   Slappy 3/25/2015 
    Amber     4   Slummy 3/26/2015 
    Shawn     3   Jimmy  3/24/2015 
    Matt     2   Johnny 3/26/2015 
    Matthew    4   Joanny 3/24/2015 
    Mark     3   Slippy 3/21/2015 
    Luke     2   Slappy 3/26/2015 
    John     1   Slummy 3/26/2015 
    Jonathan    5   Jimmy  3/24/2015 
    Zach     3   Johnny 3/26/2015 
    Asher     2   Joanny 3/21/2015 

Желаемая выход из последних 10 сделок, заказанных Прогноз сделки Дата

Customer Name Customer Group Salesman Forecast Transaction Date 

Update:

Я использую эту формулу, имитируя Скотта, но его ошибка.

=iferror(index(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Opportunity Name]]:index(All_Incremental_MDA_JV_Forecast__2[Opportunity Name],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date])),aggregate(15,6,row(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Forecast Close Date]]:index(All_Incremental_MDA_JV_Forecast__2[Forecast Close Date],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))-3)/((All_Incremental_MDA_JV_Forecast__2[[#Headers],[Pegasus Stage]]:index(All_Incremental_MDA_JV_Forecast__2[Pegasus Stage],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))="Closed Affirmative - Contract Signed")*(All_Incremental_MDA_JV_Forecast__2[[#Headers],[Forecast Close Date]]:index(All_Incremental_MDA_JV_Forecast__2[Forecast Close Date],match(1E+99,All_Incremental_MDA_JV_Forecast__2[Forecast Close Date]))='MDA-JV'!V10)),countif('MDA-JV'!$V$10:'MDA-JV'!$V10,'MDA-JV'!V10))),"") 
+0

В желаемом разделе вывода игнорируйте часть «прогноз». Должна быть только дата транзакции – sqlbg

+0

Хотя я ответил формулой, это можно сделать с помощью расширенного фильтра. См. [ЗДЕСЬ] (http://blog.contextures.com/archives/2014/08/07/top-5-items-in-advanced-filter-list/) –

+0

Я использую PowerQuery для вывода отчетов Salesforce. Из этих данных я создаю приборные панели, один из которых содержит эту таблицу, поэтому я думаю, что маршрут формулы работает лучше всего. – sqlbg

ответ

2

Шахта имеет немного другую тактику, чем @Jeeped. Хотя я украл INDEX/MATCH, который позволяет диапазонам расти и сжиматься до нужного размера автоматически.

Укажите имя Продавца, желаемого в L1 и начиная с Даты транзакции. Чтобы получить дату операции в следующем порядке:

=IFERROR(AGGREGATE(14,6,$D$2:INDEX(D:D,MATCH(1E+99,D:D))/($C$2:INDEX(C:C,MATCH(1E+99,D:D))=$L$1),ROW(1:1)),"") 

` И скопируйте 10 строк.

Тогда то имя клиента относится к дате сделки, которую я поставил в колонке I:

=IFERROR(INDEX($A$1:INDEX(A:A,MATCH(1E+99,D:D)),AGGREGATE(15,6,ROW($D$1:INDEX(D:D,MATCH(1E+99,D:D)))/(($C$1:INDEX(C:C,MATCH(1E+99,D:D))=$L$1)*($D$1:INDEX(D:D,MATCH(1E+99,D:D))=I2)),COUNTIF($I$2:$I2,I2))),"") 

Столбец Salesman простой в L1 Другой крупный.

Чтобы получить группу я использовал простой SUMIFS():

=IF(I2<>"",SUMIFS(B:B,A:A,F2,C:C,H2,D:D,I2),"") 

![enter image description here

Это заказ записи по дате, начиная с самого нового.

+1

fwiw, я обнаружил, что использование полных ссылок на колонки для INDEX (например, 'INDEX (A: A, ...') не оказывает отрицательного влияния на производительность формулы до тех пор, пока строки, которые вычисляются AGGREGATE, усекаются в объеме данных. Еще одна вещь для настройки. – Jeeped

+0

@ Jeeped пошел вперед, украл ее и для этого. Спасибо за информацию. Это имеет смысл и поможет в динамическом наборы данных –

+0

@Scott Craner - спасибо за вашу помощь здесь. Чтобы вытащить значения для даты транзакции, я упростил все, просто используя функцию LARGE IF. Это, казалось, сработало хорошо. Я попытался использовать вашу формулу для имени клиента, но это дало мне неправильное имя клиента. Имеет ли значение, что исходные данные и ta Я строю на разных листах? Не знаю, почему он не работает. – sqlbg

1

The AGGREGATE function может возвращать последовательные номера соответствующей строки к INDEX function.

С отмычка в H2, положить эту стандартную формулу в F2

=INDEX(A:A, AGGREGATE(15, 6, ROW($A$1:INDEX($A:$A, MATCH(1E+99,$D:$D)))/($C$1:INDEX($C:$C, MATCH(1E+99,$D:$D))=$H2), ROW(1:1))) 

Копировать в G2 и I2 затем заполнить вниз по мере необходимости.

jimmy_orders

Используйте IFERROR function, чтобы избежать отображения #NUM! ошибок при запуске из матчей, чтобы вернуться.

Это зависит от порядка сортировки исходных данных. Если вы хотите отменить изменение порядка сортировки, то 15 (AGGREGATE's SMALL подфункция) до 14 (подфункция LARGE AGGREGATE). Если исходные данные не отсортированы и вам требуются отсортированные результаты, вам нужно сначала получить наименьшую дату, используя аналогичную функцию псевдо-SMALLIF, а затем использовать ее в нескольких критериях для получения других соответствующих столбцов, при необходимости корректируя повторяющиеся даты.

Приложение для ListObject таблиц

Для начала, переименовать таблицу временно, пока вы разрабатываете формулу. Хотя его текущее имя (например, All_Incremental_MDA_JV_Forecast__2) может потребоваться для идентификации его для других целей, все, что он делает, теперь запутывает формулу; по существу скрывая небольшие ошибки, которые в противном случае могли бы быть немедленно очевидны. С этой целью я переименовал вашу таблицу aimf2. Как только разработка формулы будет завершена, ее можно будет переименовать обратно в ее оригинал, и все ссылки будут немедленно обновлены.

Согласно следующему изображению формулы в I4: L4 являются,

=INDEX(aimf2[Customer Name], AGGREGATE(15, 6, (ROW(aimf2[Customer Name])-ROW(aimf2[#Headers]))/((aimf2[Salesman]=$G$3)*(aimf2[Transaction Date]=L4)), COUNTIF(L$4:L4, L4))) 
=INDEX(aimf2[Customer Group], AGGREGATE(15, 6, (ROW(aimf2[Customer Name])-ROW(aimf2[#Headers]))/((aimf2[Salesman]=$G$3)*(aimf2[Transaction Date]=L4)), COUNTIF(L$4:L4, L4))) 
=PROPER($G$3) 
=AGGREGATE(14, 6, aimf2[Transaction Date]/(aimf2[Salesman]=$G$3), ROW(1:1)) 

Добавить контроль ошибок при желании и заполнить вниз на десять строк.

jimmy_sales_two
Sample worksheet с таблицами ListObject

Смежные вопросы