December 7, 2021
Hello -
I have a table/named range with the following columns:
[Team Name], [Sprint ID], [Planned], [Actual]
The [Sprint ID] value is a look-up to a second table/named range with the following data:
[Sprint ID], [Start Date], [End Date]
Basically, the second table is where users create Scrum sprints. And the second table is where they record how many story points they planned versus how many they completed.
What I'd like to do is find out how many times each particular team planned MORE points in a particular sprint than completed in the previous sprint. So, for example, if Team Yankees planned 20 points in Sprint 5 and completed only 15 of them, I'd like to know whether they then planned more than 15 points in the next sprint.
My objective is to determine whether teams are considering their past performance when planning sprints.
Thanks!
December 7, 2021
Absolutely. Sorry not to have done that originally. I will do that now. There are actually THREE challenges I'm facing. Since they are all related to the same fairly complicated workbook, I'm hoping I can raise them all in this one post.
As you may notice, I used your clever technique to create set the data source for my charts as named ranges. I've done my best to be clever, but, apparently, I still have much to learn.
CHALLENGE #1
Worksheet: "ReportPPM"
Purpose: This chart shows the SAFe (Scaled Agile Framework) "Program Predictability Measure" (PPM) for an Agile Release Train (ART). As you may know, an ART is simply a team of Agile teams working together toward a common goal over the course of a Program Increment (PI). A PI is a mid-length timebox (e.g., calendar quarter) - a collection of Scrum sprints. The chart visualizes the "Actual Business Value" (ABV) of planned objectives that the team delivered within the PI (scored using a range from 0 to 10) versus the Planned Business Value (PBV) of those objectives (scored using a range of 1 to 10), expressed as a percentage. Each ART gets one PPM score for each PI. That PPM score is the aggregation of each team's individual TPM scores (the same arithmetic, but at the team level - as depicted on the "ReportTPM" worksheet). The chart shows that ratio as a line graph over a column chart that depicts the 80%-100% target range.
Observed Behavior: The numbers on the graph appear to be accurate. However, the team names - which are not relevant at the ART level - show up on the horizontal axis even though the team names are not in the pivot table that informs the chart. This must have something to do with the pivot table and/or the "Chart_PPM_Axis" formula used in the charts "Select Data" for the axis.
Desired Behavior: We should never see the names of the teams that comprise the ART on this chart. I'd like the horizontal axis to show two levels. First is the ART (e.g., "Momentum" and "GBI"). Then for each ART we should see the PIs within that art (e.g., "PI-1", "PI-2", and so on). Then for each PI we should have a data point.
CHALLENGE #2
Worksheet: "Enter Velocity"
Purpose: This is where the user provides the performance data for each team for each Scrum sprint, including the number of Story Points the team planned ("Committed") and the number of Story Points they actually got done ("Completed").
Desired Behavior: I sense a trend in the data and I'm looking for a way to visualize it. To do that, first I need to isolate the relevant rows. I think what's happening is that teams have a tendency to try to play "catch up." For example, if they plan 20 points but only deliver 15 points in sprint 1 (S1.1), I want to know how often they then plan 25 points in sprint 2 (S1.2) - trying to catch on the 5 points they didn't get done in the first sprint. Ideally, all things being equal, a team should plan into each sprint a number of points fairly close to the number they actually completed in the previous sprint. They should never play catch-up, because that's a losing game. So, I'm looking to visualize the frequency with which teams plan more than they previously delivered - and whether they then failed to deliver (again).
Problem: The table includes data from many teams and the sequence of the data cannot be relied upon to be chronologically accurate. So, I need a way to:
- Separate out the data for each team
- Sequence the sprints by their dates (not their names)
- Determine whether a sprint in which Completed > Committed is then immediately followed by a sprint in which Committed > previous sprint's Completed value
CHALLENGE #3
Worksheet: "Setup Timeboxes"
Purpose: This is where the user creates sprints.
Problem:
- First, and most importantly, I'd like to warn the user if any of the timebox dates overlap, even by one day. For example, if S1.1 runs from 1/1/2022 to 1/15/2022 and S1.2 runs from 1/15/2022 to 1/30/2022, then I'd like to caution that S1.1 and S1.2 overlap by one day.
- Second, I'd like to caution if the name given to a sprint is not unique in the list. Even better if I can prevent this.
I have tried literally for weeks to solve the problems, but I'm stumped! I hope someone can help. Many thanks in advance.
July 16, 2010
Hi Shawn,
Thanks for sharing further information.
1. I'd say the VBA is specifying the axis labels when the 'Refresh Chart' macro is run. There'll be something in the macro determining the axis labels.
2. You can use a Pivot chart tracking committed and completed values over sprints, with a Slicer for the Art Team to visually see if a team's completed values are increasing. Or you could create a PivotTable with conditional formatting to highlight any anomalies. See 'Enter Velocity' sheet of example file attached.
3. Cell F4: =IF([@[SPRINT START]]<=E3,"Overlaps","")
Mynda
December 7, 2021
Thanks, Mynda -
CHALLENGE #1: CHART AXIS
The Refresh Chart macro only runs when that button is pushed and only performs two steps. It refreshes all workbook connections and all pivot caches. It does not set the scope of the charts and so cannot be the culprit. I'm pretty sure the culprit is somewhere in the formula for the axis, but I can't figure it out. Would you mind terribly taking one more look? It's important that I find a way to aggregate to the ART level and leave the teams out of the report.
CHALLENGE #2: CATCH TEAMS TRYING TO CATCH-UP
Your example does a good job of visualizing whether a team's Completed values are increasing from sprint to sprint. However, that's not quite the problem I'm trying to solve. I'm trying to compare Committed in Sprint T against Completed in Sprint T-1. What I need is in the table below, but I cannot figure out how to compare the value in one column against the value in another column in another row.
By the way, even this assumes that the previous row is the correct row to compare against, which may not be the case, since the table may not be sorted chronologically. Maybe I can do a lookup of each sprint's start and end dates. This quickly gets complicated!
Team | Sprint | Completed LAST Sprint |
Committed THIS Sprint |
Difference | Variance | Catch Up? |
GBI | CAPE | S2.2 | 0 | 0 | 0 | #N/A | FALSE |
GBI | CAPE | S2.3 | 13 | 13.5 | 0.5 | 104% | TRUE |
GBI | CAPE | S2.4 | 17.5 | 27 | 9.5 | 154% | TRUE |
GBI | CAPE | S2.5 | 18.5 | 33.5 | 15 | 181% | TRUE |
GBI | CAPE | S2.6 | 20 | 15.5 | -4.5 | 78% | FALSE |
GBI | CAPE | S3.1 | 14.5 | 25 | 10.5 | 172% | TRUE |
GBI | CAPE | S3.2 | 22.5 | 26 | 3.5 | 116% | TRUE |
GBI | CAPE | S3.3 | 15.5 | 36 | 20.5 | 232% | TRUE |
GBI | CAPE | S3.4 | 22.5 | 52 | 29.5 | 231% | TRUE |
GBI | CAPE | S3.5 | 40.5 | 42 | 1.5 | 104% | TRUE |
Challenge #3
Your proposed formula is simple and clever, but it assumes the sprints are sorted chronologically (and so each row can compare to the previous row), which may not be the case. What I am trying to do is check whether Sprint Start or Sprint End for a row falls between any of the other timeboxes in the table. I feel like I almost have to loop through every row, but that could tax the system (although the table will never be enormous).
July 16, 2010
Hi Shawn,
1. The formulas for your named ranges are correct, although you don't need the IF(COUNTA(... A more efficient way to write it is using IFERROR e.g.:
=IFERROR(OFFSET(ReportPPM!$W$2,,,COUNTA(ReportPPM!$W$2:$W$9999),1),0)
Looking deeper it appears the ReportPPM chart axis is coming from the ReportTPM PivotTable.
Somehow you have managed to create several PivotTables on separate sheets with the same name: PivotTable1. PivotTable names should be unique in a file. My guess is the chart is corrupted because even if I replace the defined name for the axis labels with a direct reference to cells on sheet ReportPPM, it still returns the axis labels from the ReportTPM sheet. I recommend you rebuild this chart from scratch.
2. Thanks for providing the example table. This would have been helpful in advance. You can use Power Query to generate this comparison. See sheet 'Challenge2' in the file attached.
3. If you have Microsoft 365 you can use the SEQUENCE function to list all the dates in each sprint and then use Conditional Formatting to highlight any duplicate (overlapping) dates. You could probably write a recursive LAMBDA to do this in a single cell, but I don't have time to get my head around writing one! See file attached.
Mynda
Answers Post
Trusted Members
Moderators
November 1, 2018
December 7, 2021
Thank you for the rapid and helpful reply. I've attached the updated XLS and two screen shots.
CHALLENGE #1: CHART AXIS
This is mostly resolved now! The "ReportPPM" worksheet works like a charm. I see, however, on the "ReportBurndown" chart that the vertical axis shows the ART name where it should show two levels - the ART(s) and the Team(s). See image attached. I've played with the formula, but can't get the axis to show two levels.
I was also to use the more efficient formulas you suggested for all the chart series (thanks!), but your example formula did not work for the axis labels. For example, on the ReportBurndown worksheet:
- Old Version Works: Axis=IF(COUNTA(ReportBurndown!$X$2:$X$2)>0,OFFSET(ReportBurndown!$W$2,,,COUNTA(ReportBurndown!$Y$2:$Y$9999),2),0)
- New Version Does Not Work: Axis=IFERROR(OFFSET(ReportBurndown!$W$2,,,COUNTA(ReportBurndown!$Y$2:$Y$9999),2),0)
CHALLENGE #2: PLAYING CATCH-UP ON VELOCITY
When I look at the "Challenge2" worksheet I see the data, but no formulas. It's unclear to me how this data got populated. Looks like it was just hard-coded in. See image.
CHALLENGE #3: OVERLAPPING SPRINTS
Unfortunately. I do not have Microsoft 365 - and my company will not permit its use. I can't use the SEQUENCE function.
Once again, I want to thank you for your kind and generous assistance. It is enormously appreciated.
July 16, 2010
Hi Velouria,
Not sure why you see something different. When I edit the chart references I see the axis labels are pointing to:
='New-Metrics-Workbook-2022-04-13A.xlsm'!Chart_PPM_Axis
Which is this formula:
=IF(COUNTA(ReportPPM!$W$2:$W$2)>0, OFFSET(ReportPPM!$W$2,,,COUNTA(ReportPPM!$W$2:$W$9999),1),0)
I agree, it's returning the data from the TPM PivotTable, but I can't see why.
Shawn,
1. Bar charts only have nested axis labels for Pivot Charts or regular bar charts with more than one row of axis labels.
2. I used Power Query to create the table. If you open the Queries & Connections pane (Data tab) you can see the query.
Mynda
Trusted Members
Moderators
November 1, 2018
The following users say thank you to Velouria for this useful post:
Mynda TreacyDecember 7, 2021
Hi,Mynda and Velouria -
I sincerely appreciate the time you're both investing in this, and hope others find the topics and analysis of interest and value.
When I right-click the charts on the Velocity, TPM, and PPM report sheets and then choose Select Data, I see only references to the current (active) workbook; the one dated "2022-04-19B". I'm not sure why you'd be seeing something different. And they all point to the current formulas. When I look at the Name Manager, all the formulas seem to be correct (although the axis formulas are the original, less efficient ones).
What am I missing here? Is there a way to use your more efficient formula for the axes?
With respect to the limitations of Bar charts... I guess I'm not quite understanding. When more than one team is selected in the slicer, then the chart shows TWO levels on the axis - ART and Team. When only one team is selected, the axis only shows the ART, not the Team. In this scenario, however, the ART is not useful. It's like having a report specifically about Apples but having the axis say "Fruits." Unless you look at the slicer (or my dynamic chart title) you couldn't tell it was about apples (i.e., a particular team).
Finally, with respect to the Power Query... I am prepared to teach myself how to use this tools but I get a lot of errors right now. See pics.
Thanks again. I can't express my gratitude enough.
Trusted Members
Moderators
November 1, 2018
July 16, 2010
"Bar charts only have nested axis labels for Pivot Charts or regular bar charts with more than one row of axis labels." In other words, you have a regular bar chart and when you only have one row of axis labels it will not show them nested i.e. the two parts of the label. It's just a limitation of the chart. To get around this you could create another label outside the PivotTable that concatenates the two parts and use that for your axis labels.
Please move the Power Query questions to a new thread under the Power Query forum. If you want to get up to speed with Power Query, please consider my Power Query course as there will be a limit to how much hand holding I can offer in the forum setting.
Trusted Members
Moderators
November 1, 2018
December 7, 2021
Mynda and Velouria -
You are great teachers.
I made the suggested formula change on both the ReportBurndown and ReportConfidence axes and both work perfectly now. Thank you.
I will open two separate threads. One for my Power Query question (teams playing "catch-up") and the other for detecting overlapping sprints without Office 365 SEQUENCE formula.
I cannot thank you enough for your help. I've learned a lot in just a few days.
December 7, 2021
Hi (again) -
I've been trying to figure this out for the last 10+ hours or so... but I'm at a loss. All the formulas look right to me. The XLS is now too large to upload here, even when in ZIP format.
The issue I'm having is that now any time I add a new row to any of the tables used to setup ARTs, teams, or timeboxes or any time I add a row of new velocity or business value data, I see the error in the attached pic.
Excel found a problem with one or more formula references.
I'm not sure, but I suspect this may have (must have?) been caused by the changes to the formulas that populate the charts, but they all look right to me:
Chart_Burndown_Axis | =IF(COUNTA(ReportBurndown!$X$2:$X$2)>0,OFFSET(ReportBurndown!$W$2,,,MAX(2,COUNTA(ReportBurndown!$Y$2:$Y$9999)),2),0) |
Chart_Burndown_Fast | =IFERROR(OFFSET(ReportBurndown!$Z$2,,,COUNTA(ReportBurndown!$Y$2:$Y$9999),1),0) |
Chart_Burndown_Mean | =IFERROR(OFFSET(ReportBurndown!$Y$2,,,COUNTA(ReportBurndown!$Y$2:$Y$9999),1),0) |
Chart_Burndown_Slow | =IFERROR(OFFSET(ReportBurndown!$AA$2,,,COUNTA(ReportBurndown!$Y$2:$Y$9999),1),0) |
Chart_Confidence_Axis | =IF(COUNTA(ReportConfidence!$X$2:$X$2)>0,OFFSET(ReportConfidence!$W$2,,,MAX(2,COUNTA(ReportConfidence!$AA$2:$AA$9999)),2),0) |
Chart_Confidence_High_End | =IFERROR(OFFSET(ReportConfidence!$Z$2,,,COUNTA(ReportConfidence!$AA$2:$AA$9999),1),0) |
Chart_Confidence_Low_End | =IFERROR(OFFSET(ReportConfidence!$Y$2,,,COUNTA(ReportConfidence!$AA$2:$AA$9999),1),0) |
Chart_Confidence_Mean | =IFERROR(OFFSET(ReportConfidence!$AA$2,,,COUNTA(ReportConfidence!$AA$2:$AA$9999),1),0) |
Chart_PPM_Axis | =IF(COUNTA(ReportPPM!$Y$2:$Y$2)>0,OFFSET(ReportPPM!$W$2,,,COUNTA(ReportPPM!$AA$2:$AA$9999),2),0) |
Chart_PPM_Green_Diff | =IFERROR(OFFSET(ReportPPM!$Y$2,,,COUNTA(ReportPPM!$AA$2:$AA$9999),1),0) |
Chart_PPM_Green_Low | =IFERROR(OFFSET(ReportPPM!$Z$2,,,COUNTA(ReportPPM!$AA$2:$AA$9999),1),0) |
Chart_PPM_PPM | =IFERROR(OFFSET(ReportPPM!$AA$2,,,COUNTA(ReportPPM!$AA$2:$AA$9999),1),0) |
Chart_TPM_Axis | =IF(COUNTA(ReportTPM!$X$2:$X$2)>0,OFFSET(ReportTPM!$X$2,,,COUNTA(ReportTPM!$AB$2:$AB$9999),2),0) |
Chart_TPM_Green_Diff | =IFERROR(OFFSET(ReportTPM!$Z$2,,,COUNTA(ReportTPM!$AB$2:$AB$9999),1),0) |
Chart_TPM_Green_Low | =IFERROR(OFFSET(ReportTPM!$AA$2,,,COUNTA(ReportTPM!$AB$2:$AB$9999),1),0) |
Chart_TPM_TPM | =IFERROR(OFFSET(ReportTPM!$AB$2,,,COUNTA(ReportTPM!$AB$2:$AB$9999),1),0) |
Chart_Velocity_ART_Axis | =IF(COUNTA(ReportVelocityART!$X$2:$X$2)>0,OFFSET(ReportVelocityART!$W$2,,,COUNTA(ReportVelocityART!$Y$2:$AC$9999),3),0) |
Chart_Velocity_ART_Differential | =IFERROR(OFFSET(ReportVelocityART!$AA$2,,,COUNTA(ReportVelocityART!$AC$2:$AC$9999),1),0) |
Chart_Velocity_ART_Low | =IFERROR(OFFSET(ReportVelocityART!$Z$2,,,COUNTA(ReportVelocityART!$AC$2:$AC$9999),1),0) |
Chart_Velocity_ART_Ratio_Avg | =IFERROR(OFFSET(ReportVelocityART!$AD$2,,,COUNTA(ReportVelocityART!$AC$2:$AC$9999),1),0) |
Chart_Velocity_ART_Ratio_Max | =IFERROR(OFFSET(ReportVelocityART!$AC$2,,,COUNTA(ReportVelocityART!$AC$2:$AC$9999),1),0) |
Chart_Velocity_ART_Ratio_Min | =IFERROR(OFFSET(ReportVelocityART!$AB$2,,,COUNTA(ReportVelocityART!$AC$2:$AC$9999),1),0) |
Chart_Velocity_Axis | =IF(COUNTA(ReportVelocity!$X$2:$X$2)>0,OFFSET(ReportVelocity!$W$2,,,COUNTA(ReportVelocity!$Y$2:$AC$9999),4),0) |
Chart_Velocity_Differential | =IFERROR(OFFSET(ReportVelocity!$AB$2,,,COUNTA(ReportVelocity!$AC$2:$AC$9999),1),0) |
Chart_Velocity_Low | =IFERROR(OFFSET(ReportVelocity!$AA$2,,,COUNTA(ReportVelocity!$AC$2:$AC$9999),1),0) |
Chart_Velocity_Ratio | =IFERROR(OFFSET(ReportVelocity!$AC$2,,,COUNTA(ReportVelocity!$AC$2:$AC$9999),1),0) |
Droplist_ART_Teams | =Table_Teams[ART TEAM] |
Droplist_ARTs | ='Setup ARTs'!$G$3:INDEX('Setup ARTs'!$G$3:$G$9999,COUNTIF('Setup ARTs'!$G$3:$G$9999,"?*")) |
Droplist_ARTs_Sorted | ='Setup ARTs'!$I$3:INDEX('Setup ARTs'!$I$3:$I$9999,COUNTIF('Setup ARTs'!$I$3:$I$9999,"?*")) |
Droplist_PIs_Sorted | ='Setup Timeboxes'!$S$3:INDEX('Setup Timeboxes'!$S$3:$S$9999,COUNTIF('Setup Timeboxes'!$S$3:$S$9999,"?*")) |
Droplist_Sprints_Sorted | ='Setup Timeboxes'!$M$3:INDEX('Setup Timeboxes'!$M$3:$M$9999,COUNTIF('Setup Timeboxes'!$M$3:$M$9999,"?*")) |
Droplist_Teams | ='Setup Teams'!$H$3:INDEX('Setup Teams'!$H$3:$H$9999,COUNTIF('Setup Teams'!$H$3:$H$9999,"?*")) |
Droplist_Teams_Sorted | ='Setup Teams'!$J$3:INDEX('Setup Teams'!$J$3:$J$9999,COUNTIF('Setup Teams'!$J$3:$J$9999,"?*")) |
Flag_Inactive_BV | =Counts!$C$22 |
Flag_Inactive_Velocity | =Counts!$C$15 |
Slicer_ART | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[ART].&[Momentum]"&"}") |
Slicer_ART1 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[ART].&[Momentum]"&"}") |
Slicer_ART2 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[ART].[All]"&"}") |
Slicer_ART3 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[ART].[All]"&"}") |
Slicer_ART4 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[ART].&[Momentum]"&"}") |
Slicer_ART5 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[ART].&[Momentum]"&"}") |
Slicer_PI | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[PI].[All]"&"}") |
Slicer_PI1 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[PI].[All]"&"}") |
Slicer_PI2 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[PI].&[PI-3]"&"}") |
Slicer_PI3 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[PI].[All]"&"}") |
Slicer_PI4 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[PI].&[PI-1]"&","&"[Table_BV].[PI].&[PI-2]"&","&"[Table_BV].[PI].&[PI-3]"&"}") |
Slicer_PI5 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[PI].&[PI-3]"&"}") |
Slicer_SPRINT | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[SPRINT].[All]"&"}") |
Slicer_SPRINT1 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[SPRINT].[All]"&"}") |
Slicer_SPRINT2 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[SPRINT].[All]"&"}") |
Slicer_SPRINT3 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[SPRINT].[All]"&"}") |
Slicer_STATUS | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[STATUS].&[Active]"&"}") |
Slicer_STATUS1 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[STATUS PI].[All]"&"}") |
Slicer_STATUS2 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[STATUS].&[Active]"&"}") |
Slicer_STATUS3 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[STATUS].&[Active]"&"}") |
Slicer_STATUS4 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[STATUS].[All]"&"}") |
Slicer_STATUS5 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[STATUS].&[Active]"&"}") |
Slicer_TEAM | =CUBESET("ThisWorkbookDataModel","{"&"[Table_BV].[TEAM].&[Thoroughbreds]"&"}") |
Slicer_TEAM1 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[TEAM].&[Skills to Pay the Bills]"&"}") |
Slicer_TEAM2 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[TEAM].&[Guardians of the GL]"&"}") |
Slicer_TEAM3 | =CUBESET("ThisWorkbookDataModel","{"&"[Table_Velocity].[TEAM].&[G-Invoicing]"&"}") |
varBurndownPoints | =ReportBurndown!$AM$5 |
varLighthouseMaxSprints | =ReportLighthouse!$R$18 |
varLighthouseNumSprints | =ReportLighthouse!$R$20 |
varLighthouseProjectEndDate | =ReportLighthouse!$R$23 |
varLighthouseS1End | =ReportLighthouse!$R$17 |
varLighthouseS1Start | =ReportLighthouse!$R$11 |
varLighthouseSprintDuration | =ReportLighthouse!$R$14 |
varVelocityLowerRange | =Counts!$B$17 |
varVelocityUpperRange | =Counts!$B$18 |
July 16, 2010
Hi Shawn,
This problem existed in your original file shared on this forum, so I don't think it's related to any recent changes to names. It also isn't specific to any particular table because the error is triggered when inserting a new row in a completely new table I added in the file.
It's often caused by defined names used in charts that return no data. If you look at the Lighthouse Report you'll see that all but the first legend entry have references to errors for their axis labels. That said, I tried deleting this chart and the error still occurs. I also tried deleting all charts and the error still occurs.
I also deleted the defined names in batches and the error still persists.
I also checked all chart references and they all return data, so I'm at a loss as to what is causing it. Maybe Velouria has some ideas.
Mynda
Trusted Members
Moderators
November 1, 2018
It appears to be down to any chart that has no data - in your original sample file, the Velocity chart had all data filtered out. A simple fix is to amend the formulas to always return a range - eg:
=IF(COUNTA(ReportVelocity!$X$2:$X$2)>0, OFFSET(ReportVelocity!$W$2,,,COUNTA(ReportVelocity!$Y$2:$AC$9999),4),ReportVelocity!$W$2)
rather than
=IF(COUNTA(ReportVelocity!$X$2:$X$2)>0, OFFSET(ReportVelocity!$W$2,,,COUNTA(ReportVelocity!$Y$2:$AC$9999),4),0)
and similarly with the other names for the chart.
1 Guest(s)