Sumproduct for qtrly data

Holger

New Member
Joined
Nov 22, 2017
Messages
19
Office Version
  1. 365
Platform
  1. Windows
  2. MacOS
Hi there,

I have a table that essentially has a few naming columns and then:

*Col A-K = customer, KPI, location......etc.
* Col L = monthly target column
* Col M-Y = monthly actual columns
* rows are different KPI, customers etc.

I want to calculate how many KPI in a month or qtr or YTD are >= target and summarise as a % achievement.

I got the above working for monthly calculations as follows:

How many targets: = 121 =SUMPRODUCT(--(TRIM(INDEX(KPIRawDataCL!A5:Y125,,MATCH($B$5,KPIRawDataCL!A2:Y2,0)))<>"")) // $B$5 user selects month
For a month >= target: = 91 =SUMPRODUCT(--(INDEX(KPIRawDataCL!A5:Y125,,MATCH($B$5,KPIRawDataCL!A2:Y2,0))>=KPIRawDataCL!$L$5:$L$125),--NOT(ISBLANK(INDEX(KPIRawDataCL!A5:Y125,,MATCH($B$5,KPIRawDataCL!A2:Y2,0)))))
Achievement = 91/121 = 75%

Qtrly calcs I'm getting stuck:

How many targets: 363 = SUMPRODUCT(--(TRIM(INDEX(KPIRawDataCL!A5:Y125,,MATCH($B$5,KPIRawDataCL!A2:Y2,0)))<>""))*$B$10 // $B$5 user selects month ; $B$10 = 1,2,3 depending which month in qtr
For qtr how many are >= target = ???? I dont know how to adjust above formula to calculate for the quarter. I think the problem is that it stops at the first col for the quarter. For a quarter I use a row at the top to indicate which qtr a selected month falls in.

Screenshot below shows the data (have hidden clients and location hence KPI# repeats)

1650592823921.png


Thank You so much for any help.....
 
Hi Kirk,

Thanks for this again. The missing col from my live data are client name and state....... So each client can have same KPI (ie 1a) multiple times, pending how many states we service them.....
I would like to average by KPI ie 1a, 2, 3a.... So if month label 8 is chosen it would return 0.9986 which is average of M5 and M13 in data tab.

So, in the overall dashboard I would like to show:

* Monthly average achievement for a KPI across all clients, states and month etc.
* Qtrlly average achievement for a KPI across all clients, states and month etc.
* YTD average achievement for a KPI across all clients, states and month etc.

Later, on a 2nd dashboard (client detail) I would like to be able to select month&client and then show
* Monthly average achievement for each KPI - no need to split by state or other col
* Qtrlly average achievement for each KPI - no need to split by state or other col
* YTD average achievement for each KPI - no need to split by state or other col

LET Function and SUMPRODUCT.xlsx
BCDEFGHIJKLMNOPQRST
4Select Month LabelAchievementCount Not BlankCount Exceeding TargetAll in One
51383.33%121083.33%
6
7Select QuarterAchievement
8491.67%363391.67%
9
10Select Mo-Yr for YTDAchievement
11Mar-2291.67%363391.67%
12
13
14Dashboard 1
15MonthQtrYTD
16KPI
174b99.86%<-- problem is, that currently KPIAverage has the month hardcoded and not taken form modata
185a99.34%If I repplace with modata I get a long array ant not average by KPI
197100.00%
201a100.00%
212100.00%
223a100.00%
233b67.86%
244a100.00%
25
26
27
28Dashboard 2
29
30Client:A
31MonthQtrYTD
32KPI
334b
341a
353b
Sheet1
Cell Formulas
RangeFormula
D5D5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cgtetarget/cbasis )
F5F5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cbasis )
G5G5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cgtetarget )
I5I5=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$4:$R$4<=$B$11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B5))), data, modata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
D8D8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cgtetarget/cbasis )
F8F8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cbasis )
G8G8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cgtetarget )
I8I8=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$4:$R$4<=$B$11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B8))), data, qtrdata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
D11D11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$4:$R$4<=$B11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B11))), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cgtetarget/cbasis )
F11F11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$4:$R$4<=$B11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B11))), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cbasis )
G11G11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$4:$R$4<=$B11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B11))), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cgtetarget )
I11I11=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$4:$R$4<=$B$11)*(YEAR(KPIRawDataCL!$F$4:$R$4)=YEAR($B11))), data, yrdata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
B17:B24B17=UNIQUE(KPIRawDataCL!B5:B16)
I17:I24I17=LET( modata, FILTER(KPIRawDataCL!$F$5:$Q$125,KPIRawDataCL!$F$2:$Q$2=B5), KPIselection,KPIRawDataCL!$B$5:$B$125, KPIaverage, AVERAGEIFS(KPIRawDataCL!$F$5:$F$125, KPIselection, B17#), KPIaverage)
B33:B35B33=UNIQUE(FILTER(KPIRawDataCL!B5:B16,KPIRawDataCL!C5:C16=C30))
Dynamic array formulas.
Cells with Data Validation
CellAllowCriteria
B8List1,2,3,4
B5List=KPIRawDataCL!$E$2:$R$2
B11List=KPIRawDataCL!$F$4:$R$4
 
Upvote 0

Excel Facts

Waterfall charts in Excel?
Office 365 customers have access to Waterfall charts since late 2016. They were added to Excel 2019.
OK, thanks. Your averaging formula:
Excel Formula:
AVERAGEIFS(KPIRawDataCL!$M$5:$M$125, KPIselection, B17#)
is only looking at column M in the data table...that's one issue. But let me ask, are the bases for the percentages in the source data equivalent? Generally, averaging percentages is a bad idea unless the basis for each of the items to be averaged is the same. Taking the average of 1/1 (100%) and 500/1000 (50%) produces 75% (using the percentages), but 501/1001 is about 50%. Your achievement scores described in earlier posts count how many times some performance metric (expressed as a percentage) meets a target percentage relative to the total number of events where the comparison can be made. But now it appears that you want to average the performance metrics directly, without any consideration of the target percentages...is that meaningful to you?
 
Upvote 0
Thanks. That the formula is only looking at col M is exactly what I can't seem to solve. I tried replacing M5:M125 with the modata we defined earlier but then it somehow does not take the KPIselection into account and throws out a huge array instead of populating the KPI rows....

As the KPI target for a specific KPI and for a client is the same in each state and hence for the entire client averaging the performance for a KPI should be okay without comparing if the tagret is over-/underachieved. The result data is anyways used in graphs for month, qtr, year.
 
Upvote 0
The AVERGEIFS function is taking into account the KPI's. I've highlighted in yellow how the formula looks at KPI 4b, then averages the two yellow values from the source data (I've copied the full KPI list, targets, and column M (i.e., month label 8) into columns K:M here for convenience). Next KPI 5a is looked at, only one is found, and it is reported back as the average, etc. The array result obtained is taking into account the aggregation of raw data into groupings determined by the unique KPI in column B.
MrExcel_20220423_Holger.xlsx
BCDEFGHIJKLM
16KPITargetCol M, Mo 8
174b0.998554b98.50%99.71%
185a0.99345a98.00%99.34%
1971799.00%100.00%
201a11a99.00%100.00%
2121298.00%100.00%
223a13a98.00%100.00%
233b0.67863b99.85%67.86%
244a14a99.50%100.00%
254b98.50%100.00%
261a99.00%100.00%
27298.00%100.00%
283a98.00%100.00%
Sheet1
Cell Formulas
RangeFormula
B17:B24B17=UNIQUE(KPIRawDataCL!B5:B16)
I17:I24I17=LET( modata, FILTER(KPIRawDataCL!$M$5:$X$125,KPIRawDataCL!$M$2:$X$2=B5), KPIselection,KPIRawDataCL!$B$5:$B$125, KPIaverage, AVERAGEIFS(KPIRawDataCL!$M$5:$M$125, KPIselection, B17#), KPIaverage)
Dynamic array formulas.
 
Upvote 0
I think I'm so far as well. Maybe my English is confusing. In my formula it defines KPIaverage as KPIaverage, AVERAGEIFS(KPIRawDataCL!$M$5:$M$125, KPIselection, B17#).....

How can I make this dynamic so that if the user selects a diff months the results are updated. I tried to replace red section with modata but that does not work....
 
Upvote 0
You need to filter your source table by column (to operate on the correct month) and by row (to aggregate like KPI's), so a nested FILTER function is used to define a modified monthly data subset called mokpidata. When you do this, make sure the array sizes from one filter are compatible with the other filter. In this case, the inner FILTER has indexes from 5 to 125, so the outer FILTER also references the KPI range from B5:B125.
MrExcel_20220423_Holger.xlsx
BCDEFGHI
4Select Month LabelAchievementCount Not BlankCount Exceeding TargetAll in One
580.916666712110.9166667
6
7Select QuarterAchievement
840.916666736330.9166667
9
10Select Mo-Yr for YTDAchievement
11446210.916666736330.9166667
12
13
14Average KPI Achievement by KPI
15
16KPIAvg for month in B5 per KPI
174b0.99855
185a0.9934
1971
201a1
2121
223a1
233b0.6786
244a1
Sheet1
Cell Formulas
RangeFormula
D5D5=LET( modata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$2:$Y$2=$B5), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cgtetarget/cbasis )
F5F5=LET( modata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$2:$Y$2=$B5), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cbasis )
G5G5=LET( modata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$2:$Y$2=$B5), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cgtetarget )
I5I5=LET( rawdata, KPIRawDataCL!$M$5:$Y$125, target, KPIRawDataCL!$L$5:$L$125, modata, FILTER(rawdata,KPIRawDataCL!$M$2:$Y$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$M$3:$Y$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$M$4:$Y$4<=$B$11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B5))), data, modata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
D8D8=LET( qtrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$3:$Y$3=$B8), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cgtetarget/cbasis )
F8F8=LET( qtrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$3:$Y$3=$B8), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cbasis )
G8G8=LET( qtrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,KPIRawDataCL!$M$3:$Y$3=$B8), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cgtetarget )
I8I8=LET( rawdata, KPIRawDataCL!$M$5:$Y$125, target, KPIRawDataCL!$L$5:$L$125, modata, FILTER(rawdata,KPIRawDataCL!$M$2:$Y$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$M$3:$Y$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$M$4:$Y$4<=$B$11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B8))), data, qtrdata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
D11D11=LET( yrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,(KPIRawDataCL!$M$4:$Y$4<=$B11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B11))), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cgtetarget/cbasis )
F11F11=LET( yrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,(KPIRawDataCL!$M$4:$Y$4<=$B11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B11))), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cbasis )
G11G11=LET( yrdata, FILTER(KPIRawDataCL!$M$5:$Y$125,(KPIRawDataCL!$M$4:$Y$4<=$B11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B11))), target, KPIRawDataCL!$L$5:$L$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cgtetarget )
I11I11=LET( rawdata, KPIRawDataCL!$M$5:$Y$125, target, KPIRawDataCL!$L$5:$L$125, modata, FILTER(rawdata,KPIRawDataCL!$M$2:$Y$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$M$3:$Y$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$M$4:$Y$4<=$B$11)*(YEAR(KPIRawDataCL!$M$4:$Y$4)=YEAR($B11))), data, yrdata, cgtetarget, SUMPRODUCT((data<>0)*(data>=target)), cbasis, SUMPRODUCT(--(data<>0)), cgtetarget/cbasis )
B17:B24B17=UNIQUE(KPIRawDataCL!B5:B16)
G17:G24G17=LET( mokpidata,FILTER(FILTER(KPIRawDataCL!$M$5:$X$125,(KPIRawDataCL!$M$2:$X$2=$B$5)),KPIRawDataCL!$B$5:$B$125=$B17), AVERAGE(mokpidata) )
Dynamic array formulas.
 
Upvote 0
Since there is no redundancy in the AVERAGE formula, I would probably opt to not incorporate it into the LET function. You can if you prefer to see the definition of mokpidata (monthly data parsed by KPI) explicitly. Without the LET function, the formula would be:
Excel Formula:
=AVERAGE(FILTER(FILTER(KPIRawDataCL!$M$5:$X$125,(KPIRawDataCL!$M$2:$X$2=$B$5)),KPIRawDataCL!$B$5:$B$125=B17))
 
Upvote 0
Solution
Awesome Kirk. Thank very much again. I got both ways working and will see if I can adapt for Qtr and YTD filtering to get average for those as well.

Again thanks for all your efforts.
 
Upvote 0
Glad to help. So that I understand, for quarterly averaging, Qtr 4 and KPI 4B would have 6 values to average in this example?
 
Upvote 0
Yes correct and with Q4 and KPI 4b result would be 99.95%.

One last thing I corrected (dare I say ;)), is in the original all-in-one section the formula for QTR and YTD

LET Function and SUMPRODUCT.xlsx
BCDEFGHI
4Select Month LabelAchievementCount Not BlankCount Exceeding TargetAll in One
5891.67%121191.67%
6
7Select QuarterAchievement
8491.67%363391.67%
9
10Select Mo-Yr for YTDAchievement
11Mar-2294.79%969194.79%
12
13
14Dashboard 1
15Month
16KPI
174b99.86%
185a99.34%
197100.00%
201a100.00%
212100.00%
223a100.00%
233b67.86%
244a100.00%
Sheet1
Cell Formulas
RangeFormula
D5D5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>"")*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>"")), cgtetarget/cbasis )
F5F5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cbasis )
G5G5=LET( modata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$2:$R$2=$B5), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((modata<>0)*(modata>=target)), cbasis, SUMPRODUCT(--(modata<>0)), cgtetarget )
I5I5=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=$B$5)), data, modata, cgtetarget, SUMPRODUCT((data<>"")*(data>=target)), cbasis, SUMPRODUCT(--(data<>"")), cgtetarget/cbasis )
D8D8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>"")*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>"")), cgtetarget/cbasis )
F8F8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cbasis )
G8G8=LET( qtrdata, FILTER(KPIRawDataCL!$F$5:$R$125,KPIRawDataCL!$F$3:$R$3=$B8), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((qtrdata<>0)*(qtrdata>=target)), cbasis, SUMPRODUCT(--(qtrdata<>0)), cgtetarget )
I8I8=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=$B$5)), data, qtrdata, cgtetarget, SUMPRODUCT((data<>"")*(data>=target)), cbasis, SUMPRODUCT(--(data<>"")), cgtetarget/cbasis )
D11D11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=Sheet1!B5)), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>"")*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>"")), cgtetarget/cbasis )
F11F11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=Sheet1!B5)), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>0)*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>0)), cbasis )
G11G11=LET( yrdata, FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=Sheet1!B5)), target, KPIRawDataCL!$E$5:$E$125, cgtetarget, SUMPRODUCT((yrdata<>"")*(yrdata>=target)), cbasis, SUMPRODUCT(--(yrdata<>"")), cgtetarget )
I11I11=LET( rawdata, KPIRawDataCL!$F$5:$R$125, target, KPIRawDataCL!$E$5:$E$125, modata, FILTER(rawdata,KPIRawDataCL!$F$2:$R$2=$B$5), qtrdata, FILTER(rawdata,KPIRawDataCL!$F$3:$R$3=$B$8), yrdata, FILTER(rawdata,(KPIRawDataCL!$F$2:$R$2<=KPIRawDataCL!$Q$2)*(KPIRawDataCL!$F$2:$R$2>=$B$5)), data, yrdata, cgtetarget, SUMPRODUCT((data<>"")*(data>=target)), cbasis, SUMPRODUCT(--(data<>"")), cgtetarget/cbasis )
B17:B24B17=UNIQUE(KPIRawDataCL!B5:B16)
I17:I24I17=LET( mokpidata,FILTER(FILTER(KPIRawDataCL!$F$5:$R$125,(KPIRawDataCL!$F$2:$R$2=$B$5)),KPIRawDataCL!$B$5:$B$125=$B17), AVERAGE(mokpidata) )
Dynamic array formulas.
Cells with Data Validation
CellAllowCriteria
B8List1,2,3,4
B5List=KPIRawDataCL!$E$2:$R$2
B11List=KPIRawDataCL!$F$4:$R$4
 
Upvote 0

Forum statistics

Threads
1,214,919
Messages
6,122,260
Members
449,075
Latest member
staticfluids

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top