Index Match SumIF Problems - excel

I'm trying to create a formula that sums student attendance by week, based on the students ID number. Basically, I want it to look up the student ID, and then output the sum of attendance for certain weeks. This is what I came up with, but it's not working correctly. I'll also need this for each month.
=sumifs(index(Attendance!$A:$Z,MATCH('Attendance by Week'!A5,Attendance!$A:$A,0),0), Attendance!$F$6:$Z$6,Attendance!$F$4:$Z$4,">=" &'Attendance by Week'!F$4,Attendance!$F$4:$Z$4,"<"&'Attendance by Week'!F$4+7)
Attendance by Week Worksheet:
The dates are the start of the week (every Sunday)
Attendance Worksheet:
Each "1" means the student was present
Any Help is appreciated!

For this type of challenge I would skip formulas completely, and go with a PivotTable-based solution because not only do they aggregate things without the need for complex formulas but they also let you group things by numbers of days.
The only barrier you have is that your data is currently as a crosstab, and PivotTables don't like 'em. So you'd need to either change the data entry layout to a flat file i.e. this:
...or use one of the methods I outline at convert cross table to list to make pivot table to turn your crosstab into a flat file. (I used PowerQuery, which is built in to Excel 2016 or later and available as a free addin for Excel 2010 or 2013).
But once you've done that, you can then create a PivotTable that automatically does all that grouping and summing, like so:
...using the Grouping feature:

Related

Excel XP for inventory management Simple in theory but can't achieve it

I need to create a simple and easy to use inventory management sheet or database.
It may be better to use access as I see it, but people is more familiar using excel.
Imagine a warehouse where we store goods. Goods are often delivered so I have to reduce the stock cound for a particular item. Then if the warehouse is short in some goods, more of these are bought.
The thing is I need to store a history of delivers we make but also store per item the actual count.
I thought having a column for initial items count, then add ins and subtract outs.
I tried using db functions, dynamic tables etc, but the problem is that when I add new registries for new item outs and ins, the dynamic table wont resize it's source and the same for range for functions.
What would be the best way to achieve what I want?
The thing is that we do everything manually, counting, summing and subtracting each time we have ins and outs.
I didn't want to make something overcomplicated to use, but rather save time by automatinc the ins and outs calculations and making it easier to search for particular registries.
You can do this with an Excel Table and a pivot table (or some formulas). The columns should include date, item code, transaction type (coming in or going out), number of units. You can add columns with more information.
Next, enter a starting stock for each item code. Then enter new lines for each transaction. If you have bought new stock, put a positive number into Units. If you have sold or delivered stock, put a negative number.
Then you can build a pivot table that calculates the totals per item code (or use formulas). You can build other pivot tables to calculate values per month or using other data you may want to include in the data entry table.
An Excel Table will automatically adjust formulas and formatting to new rows. If you base the pivot table on the Excel Table, you only need to refresh the pivot table after you have entered new data. If you prefer formulas, you can use Sumifs(), but you need to keep the list of items for the stock totals list up to date manually.

SSAS Calculated member that knows if the user is using the report filter

I am trying to write a calculated member which acts differently depending on whether the user is filtering by that member or has it dragged down as rows or columns on their pivot table (using Excel).
The rules are:
1. If the user is using the date dimensin as a Report Filter in Excel, then the calculated member should get the maximum date out of all dates that they are filtered by.
2. If they have the date dimension as rows on the pivot table, then I need to apply ClosingPeriod and some other logic.
Please try this. The idea came from here.
Basically the dynamic named set represents what's in the report filters. And the EXISTING keyword trims the list of days down to the filter context of the current cell letting you detect say if one month is on rows. Compare counts and you can detect what the user did.
CREATE HIDDEN DYNAMIC SET CURRENTCUBE.SelectedDays as
[Date].[Date].[Date].Members;
CREATE MEMBER CURRENTCUBE.[Measures].[My Calc] as
CASE
WHEN SelectedDays.Count > {existing [Date].[Date].[Date].Members}.Count
THEN Tail({existing [Date].[Date].[Date].Members},1).Item(0).Item(0).Name
WHEN SelectedDays.Count < [Date].[Date].[Date].Members.Count
THEN Tail(SelectedDays,1).Item(0).Item(0).Name
END
Performance is going to not be good. And I suspect users will be confused with the results of your calc. If you want to describe the business scenario more I can maybe recommend a better approach.

Calculating the difference between the count of two date fields

I have data that is provided to me that includes the routed date and the service restoration date. From that it's pretty easy to generate a pivot table that generates a table with the date of the month, then a count of received tickets (routed), and the count of closed tickets. I'm trying to generate a calculated field (Pivot -> Options -> Fields, Items & Sets -> Calculated Field) to derive the delta.
When I use =Received - Closed, I get the difference in date rather than the delta in the counts. Can anyone point me in a direction on how I may calculate it? If it was static content it would be easy peasy, but I'm not getting the knack of doing this with a pivot table. Also I could achieve something similar with a countif type command and run it from a static calendar type table (which is what I'll probably end up doing if this ends up being a dead end).
As a solution, you can copy the pivot table and paste it as values in the new sheet. Do you math on values instead of on pivot.
I don't know if formatting your results in the pivot as NUMBER would help.. But you can try that as well.
I was unable to determine a way outside of what was mentioned above by Andrew. I've set up a static date list for the calendar month and then use a series of countifs instead of a pivot table to generate the output. Thanks to all who reviewed the question and to Andrew for his responses.

Dax code: find sum of values filtered by month

I have seen some posts that address this concept online, but I have been unable to adapt them to my needs.
Scenario:
I have a table with three columns.
Column A- [Month] (formatted mm/dd/yyyy)
Column B- [salesperson]
Column C- [Assets]
I am trying to determine a formula which will return the total assets for all salespeople for each month in a fourth column.
Why am I doing this? I am building a report which will generate a graph from this data. In reality there will be additional columns which will contain values for some variables. I will be using the slicer function in conjunction with these variables to create an interactive functionality within the graph. Hard coded references won't work for me, as this will be a recurring report, and the dataset will be refreshed with current data regularly.
Thank you for any help you can offer. I'm still fairly new to all this (<1yr) so interpreting general formulas I've found elsewhere has been very problematic.
Cheers!
Create a calculation like this (syntax dependent on data model)
AllSalespersons:=CALCULATE(SUM[Assets], ALL[Salesperson])
Using the CALCULATE function here is important because it will remove the row syntax for Salesperson (created in the pivottable) and give you the sum of 'ALL' salespersons for each month.
Again, you'll have to play with the syntax to fit your data model, but based on your quetsion, I think this should give you what you are looking for.

Excel vb project-best practice

I'm not a vb developer neither so familiar with excel. Anyway i have a project to be done using MS Excel (cannot use access).
System is to provide a ratio analysis(ans some other analysis) of companies where data from an annual report need to entered to the system. Then based on several reports data I can derive graphs and all other information.
My question
Now I can store data in a single sheet like using is as as a database. it'll be like
CompanyName Year Data1 Data2 Data3...
Here the CompanyName can be duplicated as many Years data can be entered. If I use this method Each time I derive company data, I have to search for the relevant rows in the worksheet and keep lots of data in an array as I read through those rows and produce the final result.
Or I can use separate worksheet for each company. Then I only have to search for the relevant sheet name and perform operations in that worksheet it self easily.
So what is the best way to do this?
Thanks
Whatever way works. IMO you could create a defined range (or many) and issue SQL against it just like it was Access table(s). I'm for keeping all like data on the same worksheet even for different companies; but that's just my 2 cents. You can create a pivot to separate out the information and slice/dice it however needed
Since someone liked the comment as an answer:...
It might be simpler to do some of this just using formulas and Excel functions. The basic approach would be to keep the data on one sheet and sort it by year within company so that all the years for a company are grouped together. Then use Filter to create a list of unique companies. These steps get repeated each time you add new data.
Then create 2 formulas for each company: the first uses MATCH to find the first row containing the company name and the second uses COUNTIF to find how many rows there are for the company. Then you can use OFFSET(firstrow,ColumnIndex,NumberOfRows,1) (or similar) to get the required range of data for Charts and ratio analysis etc.

Resources