SUMIFS Between Conditions - google-sheets-formula

I am looking for some help with a SUMIFS formula.
I am trying calculate the revenue between dates for a coupon code, where the coupon code sales are in a separate sheet. I need the between dates to be until that discount code appears in the sheet again.
For example,
If a discount code is promoted on the 25th of January and again on the 30th of January, I need the 25th of January row to show the sales since then until the SAME code is promoted again (eg. between 25th January and between 30th January). The 30th of January row would then show the revenue from that date onwards, until the code appears again in another date row in the future.
This is my formula:
=SUMIFS('Code Revenue Feed'!$E:$E,'Code Revenue Feed'!$C:$C,D2,'Code Revenue Feed'!$A:$A,">=" &$B2)
This formula does not show between dates, only from the date it is promoted but I need to show from that date, until the next date the code appears again.
Here's my dataset (please filter the code column by KATIEHAYES so you can see what I mean):
https://docs.google.com/spreadsheets/d/1kzU6T6a95WPoCDkkMjDmqWkKTDOxA0whn1Zk5kGRbBQ/edit?usp=sharing

For this to work, you need to enter an end date in column C (in my copy of your data, this is in cell C664 of the Posting Details UK sheet) where I have chosen 31-Dec-2022 (as your file is view-only, and because you appear to have a filter active on the Posting Details UK sheet, when I copied your data the last row of data on my sheet is 663)
=SUMIFS('Code Revenue Feed'!$E$3:$E$5180,'Code Revenue Feed'!$C$3:$C$5180,D2,'Code Revenue Feed'!$A$3:$A$5180,">="&C2,'Code Revenue Feed'!$A$3:$A$5180,"<"&INDIRECT("C"&IFNA(match(D2,D3:D$663,0)+ROW(),664)))
the above formula can be entered in cell E2 of your UK sheet, and then copied down. This formula uses the INDIRECT() function to determine the 'until' date - if a match for the current coupon code cannot be found in the remaining rows, then the end date from row 664 is used (you will have to adjust both the 663 and 664 references as you have almost 200 more rows of data).

Related

Power Query - DATEADD fails once current year filter applies

Please help. I don't understand why I have 2 similar data models and one works but the other does not.
I have a fact table with a Calendar Key and data as granular by day by location. I have a calendar dimension table with a Calendar key, each individual date, and month/fiscal year definitions.
Measures are Rev = SUM(FactTable[RevColumn]) then Rev PY = CALCULATE([Rev], DATEADD(CalendarTable[Day_Date], -1, YEAR))
Model 1 in Power BI, when I apply date filters, Rev calculates the total revenue & Rev PY calculates last year's rev for same range. Even if I select all dates that are YTD (which is tedious)
Model 2 in Excel 2016 Power Query, when I apply a year filter, Rev calculates total revenue for YTD in Fiscal Year & Rev PY is blank.
I don't understand what is different and why it would even fail in the first place. Calculate is supposed to override the filter context of the current filters right?
Also: the only "Date" type columns are located in the calendar table so it's not possible for me to select the wrong table.
I ultimately had to ask a professor on Udemy.com. The solution is to mark you calendar dimension table as a "Date Table." Since I'm combining the 2 tables on a whole number field, the time intelligence functions only work when filtering with date columns.
By marking the Calendar table as the Date table, the time intelligence functions know to use any attributes from that table to filter down the date ranges and get and display the appropriate answer.
In Power Pivot view, click the "Design" ribbon, then click the "Date Table" button and the "Set Default" button after that.
This resolved all issues I had.

Month slicer and filter not working properly on rolling data Power BI

i All.
I have created below measure to reflects always 3 month figures when month slicer is used.
3R =
CALCULATE(COUNT('Order'[Order/ not ordered]),DATESINPERIOD('Date'[Date],LASTDATE('Date'[Date]),-3,MONTH)))
However, when I try to add salesman figures as filter with below formula, and click to month slicer it is directly show just choosen month figures not 3 months.
3R John =
CALCULATE(COUNT('Order'[Order/ notordered])
,DATESINPERIOD('Date'[Date],LASTDATE('Date'[Date]),-3,MONTH),FILTER('Order','Order'[Salesman]="John")))
on below link I have shared a sample for this. there are 2 different table and 1 matrix.
Matrix is named working and 1 of the table is named as "not working properly". not selecting any value on slicer. all data gives same data. however when clicked month slicer not named main table is changing and this is correct. also matrix is correct but table that I am trying to achive is not working.
What i am trying to achive is, 3 month roling data based on customer and salesman. when click for example 1 on month slicer table should give January 2020, December 2019 and November 2019 figures.
https://drive.google.com/file/d/1LoqSiKhHMFn_OioI2RnXOzjcIL9dPRjS/view?usp=sharing
below is the solution. worked for me.
3R John =CALCULATE(COUNT('Order'[Order/notordered]),DATESINPERIOD('Date'[Date],LASTDATE('Date'[Date]),-3,MONTH),'Order'[Salesman]="John"))
just remove filter('order', section and it is ok now.

Calculate Full Period Basing Dates Selected by User on the Date Slicer

We need to create a dashboard with a date slicer and a TimeGranularity slicer.
The date slicer allows the user to choose which every date range they want.
The TimeGranularity slicer has the values like Day, Week, Fiscal Period, and etc.
To make it easier to explain. I reduce the model to only 4 tables: a fact table "FactTable", a date table "DateTable", a dim table "TimeGranularity" with flattened dates for different time granularities like Day, Week, Fiscal Period, a dim table "Location"
The TimeGranularity table connects to DateTable as many to one relationship.
What we need is, when the user select on the date slicer with a date range like 01-Jan-2017 to 05-May-2017 and the Fiscal Period level on the TimeGranularity slicer, the metric [Sales] should be able to pull/calculate the full fiscal periods that 01-Jan-2017 and 05-May-2017 fall in plus the fiscal periods in between.
Our DateTable has all the related columns that might be needed for this, like FiscalPeriodID, FiscalPeriodDays (how many days in each FP), FiscalPeriodDayNumber(day numbering in each FP), FiscalPeriodIndex (numbering of all FPs)
Currently the dax for [Sales} is:
[Sales]=Calculate(sum(FactTable[Sales]), TimeGranularity)
I would love to share the pbix file but don't know how to load it up here....
Thanks a lot in advance!

Rank only for latest month

I've a calculated field "Total Revenue" which blends revenue from multiple data sources in Tableau.
Based on this field (aggregate field) on monthly basis, I would like to show only TOP 5 items with highest revenue as of latest month.
As shown in above table, items have to be filtered out (as they are TOP 5 in March) based on revenue data as of the latest month (March). How can this be achieved using RANK()? I'm not able to rank only for latest month as formulated below because it shows error as I cannot mix aggregate and non-aggregate functions.
IF DATETRUNC('month'),ReportDate)=//March 1st date given//
THEN RANK(Total Revenue)
END
My solution is a kind of workaround but seems to be working:
Create a calculated field with below formula:
IF DATEPART('month', {MAX([date])}) = DATEPART('month', [date])
and DATEPART('year', {MAX([date])}) = DATEPART('year', [date])
THEN
[revenue]
ELSE
0
END
The {MAX([date])} part on the code gets the maximum date in your data, it is fixed with { and } characters so that the value is not effected by the filters, date partitions etc. If you want the sorting month to be the one we are in then you should change that part with NOW()
Now we have a value containing only the sum of the latest month and we can sort our visual with this Measure.
You can drag your new measure (I called my measure: 'last month revenue') to the details and right click your item pill on the Rows, sort it by your new field.
And finally drag your item to the filters and go to Top tab, make filter your data according to sum of "last month revenue" measure.
Below screenshot shows the excel data and the final Tableau table:

Visual Studio Report Designer: I don't understand group filters

I'm writing a report that has proposal information by estimator per month. So I created a matrix where each row is grouped by estimator and each column is grouped by the month.
The thing is, my query includes data for this year AND last year, but the columns by month should only contain this year's information. So I though simple, I'll create a filter: Year(variable_date) = Year(Today()).
When I do this, no record information shows up. But then I changed the column to group by month AND year and suddenly, it works. Only 2015 records show up in the calculations per month.
Why did I need to group it by month AND year? Why couldn't I just group by month and have the filter remove records that didn't have the correct year using the filter group property tab?
Thanks!
P.S. I hope I have the tags right...
It sounds like month and year are separate fields. So when you group only by month it is grouping all of the rows where the value for that field is the same. (Month=8 exists in 2014 and 2015.) The values are just numbers to SSRS and it doesn't know it needs to look at the year field too unless you tell it to.

Resources