Excel graph based on data subset - excel

I am struggling with Excel to make a graph based on a condition that is not part of the graph. The data set it is based on can't be filtered. It has to be shown in full, but the graph should only contain a subset based on a fixed criterium. For instance: I have 20 rows of data, but only row 3, 9 and 10 meet the criterium. And this changes all the time. Only those three (in this example) have to show up in the graph. I just don't know how to do this. Any thoughts? I'm working with Excel 2010.
I am not sure which other information is useful for you to understand my problem. Please let me know.
Thanks!

You can use Excel Formulas to filter the data to another place (maybe a hidden Worksheet) and give that one as the source of the chart.

If your data is in a properly formatted table, you could try a pivot chart.
a) It might be helpful if you could provide sample data and sample output you are trying to achieve?
or,
b) you could add a formula column which evaluates the contents of the data column, e.g. if criteria column = "some value" then data else zero or null (E.G. your criteria column is A, your data column is B, then in column C you could write =IF(A2="Yes",B2,0) or =IF(A2>=5,B2,0)). then you can graph the data in column C?

Related

Using IF with AGGREGATE

While I am a longtime 'lurker' and have gleaned a great amount of Excel knowledge through this site, I've never asked a question before. This time I'm really stumped...
I have a table with multiple columns. The data I'm working with is obtained from a multiple VLOOKUPs of another workbook for which I do not own. That workbook has some issues with hidden characters and rows that are hidden. I'm trying to create a dashboard from this data and was successful using the AGGREGATE function (2,7) to COUNT and omit the data I don't want.
The next tier for this data needs to incorporate a lookup against another column (image attached). For this, I want to look up data in column B and subtract cells in column C if the data in column B matches a cell in column A.
I have tried multiple ways of doing this but I think that AGGREGATE might be the best approach since it can ignore hidden data and rows.
My latest attempt was to add an IF statement as follows, but that results in a SPILL condition:
=IF('Transport Calendar'!E2:E830='Transport Calcs'!M6,AGGREGATE(2,7,'Transport Calendar'!X2:X830)-AGGREGATE(2,7,'Transport Calendar'!Z2:Z830),"FALSE")
Any help would most certainly be appreciated!

Using of INDIRECT formula in many ranges

I'm standard excel user (I know only record macro :)), but I really need your help, I'm lost. I'll try to describe what I need to do.
I'm trying to apply limited drop-downs based on previous selection. Please find the picture:
Data (columns A, B)
Dropdowns (G, H)
What I need is, that the user select some, concrete Company in column G. He will have limited drop-down in H column. So everything, what I need, is using INDIRECT formula through the Data Validation (menu - Data), but for this I need to get name to every range in column B, which will be available (for same Company), so the name of these ranges have to have exact name for each Company (a, b, c ...etc.).
The problem is that I have hundreds Companies. Do you have some idea, how can I proceed macro which allocate these names to all ranges in B column with names as per A column?
If you have any other idea how I can solve this, it will be sufficient for me too.
Thanks.
Franta
The better approach here is to use OFFSET for the Data Validation List formula.
In H2 apply Data Validation List using
=OFFSET($B$1,MATCH($G2,$A:$A,0)-1,,COUNTIFS($A:$A,$G2),1)
What this does is:
Finds the row containing the first instance of company in column A (MATCH($G2,$A:$A,0))
Counts the number of instances of company in column A (COUNTIFS($A:$A,$G2))
Creates a range offset from B1 by the Row match -1, and resizes it to the count of company
That's the range used by Validation
Note: this relies on the companies being sorted as shown in your sample data

Restructuring data in excel

I am trying to condense data in a specific way. I want any occurrences of the number 1 in each column to show up as 1 (regardless of how many times it occurs) with the corresponding site, in the corresponding column. Some sites occur multiple times in the original data, and I want to make it so that only one of each unique site shows up in the resulting data table with a 1 for the corresponding column if there any 1's in the column from the original data.
I would think it would be a vlookup function, but I have tried many different things and I am really stuck on this.
Image of original data and what I am trying to do:
Thank you
This assumes that your data set only contains 1 or blank and this approach uses a Pivot Table with MAX function. Below are details in case anyone doesn't know Pivot Tables.
Select a cell in your data and insert Pivot Table. Note, I added a title for column A, as you need that in the Pivot Table.
Click in the created Pivot Table and the PivotTable Fields dialog should pop up. If not, right click in Pivot Table and select Show Field List.
Drag the Field names (Code, a, b,& c) down to the appropriate blocks below. (Values under Columns will be created for you.)
Click on the drop down arrow next to each field name and select Max. That will rename it to "Max of ...". If that bothers you, then you can type the name you want into the Custom Name field. Note, it will not let you type the same name as the field name, eg a, but it will work if you put a space in front of it.
Given that the Pivot Table would be a lot of work for a large number of columns, here is a formula based approach. Put this formula in cell G2, then drag it down and across to fill your new table.
Note, you will have to populate all codes that you have in column F. And if any new codes are added later you will have to keep this updated. One of the advantages of a Pivot Table is that it will do this for you.
I know that you won't be putting this in these cells, so adjust accordingly. In fact, I would recommend this be in another sheet.
=IF(COUNTIFS($A:$A,$F2,B:B,1)>0,1,0)
COUNTIFS($A:$A,$F2,B:B,1)
This will count each occurrence when the value in column A matches your code $F2 AND the value in column B equals 1.
If that count is >0, then you know that at least one match was found and the IF will return 1, otherwise 0.

Draw a chart in excel based on a string appearance

I have an excel file that contains 6 different sheets and every sheet contains some cells that there's text value inside them.
Now, I want to draw a chart that shows how many times a string was revealed in a larger string.
As much as I could find in google search, excel will draw charts based on numeric values,
So, I need to know is there a way that draw a chart based on text with my criteria?
Thanks in advance
UPDATE :
Assume that I have values like this:
And I need to know how many times a string appeared in B cells for every program.
And What if program name was in another sheet and string col was in someone else.?
No, Excel cannot chart anything based on text. You need numbers. In order to get these numbers you can apply different techniques, like formulas or VBA to analyse the text and produce the respective numbers. If you need more detail, provide more detail about your data.
Edit after question update: Consider this screenshot
the formula in C2 is
=ISNUMBER(SEARCH($G$1,B2))*1
The table in columns F and G is a pivot table with "Program" dragged to the rows area and "found" dragged to the values area and set to sum. This table can be used for charting.
If the program and the string are in two different sheets, you can still use formulas to construct a data source for the pivot table.

Excel Dynamic Drop Down List

I have two tables that get dynamically created from a database query; the first table is the source of the drop-down list, and the second is the table that I will apply the drop-down list via data validation. First table:
and the second table:
What I need, ideally through just Excel formulas, is an intelligently designed drop-down that shows only the dimension values associated to the dimension in question.
So in cells B3:B10, the drop-downs would show a,b,c. In cells C3:C10, the drop-downs would show 1,2,3. In cells D3:D10, the drop-downs would show x,y,z. Etc, etc.
I need this to be dynamic in the sense that a week from now my DB query may return a fourth dimension that would need to follow the same approach.
Not sure if this is even possible without writing some VBA, but I figure I'd see if anybody has any creative ideas. Cheers!
You have to use Name Manager and =INDIRECT() formula to achieve that.
First download the sample file.
Sample File
See this tip (By me). It will help you to see screenshots step by step. Link is here
Now in-case of your data you have to use some formula to filter data automatically when new data come. So that new data can organize for dynamic combo boxes. I can also do that for you if you are not able to do that. Then share your sample workbook with me.
It is very possible, but not simple. There are a several ways to implement this, depending on your requirements, how dynamic it needs to be, and the expected structure of the data (as I mentioned in a comment).
I will give one possible solution, that is mostly dynamic, and is the simplest to explain. You can use a similar logic to make it all dynamic.
This solution will retrieve the data from table #1 according to the dimension name, assuming it is not sorted, and return the values in the order they are given in the table.
For some of the ranges I create names for simplicity, and some are mandatory. In order to follow the formulas logic you need the named ranges I use.
Create named ranges for table #1: (Either by using the Name Box or using the Name Manager Ctrl+F3):
For the data in the column Dimension: DimName =B3:B11
For the column Dimenstion Value: DimValue =C3:C11
Create dimension values lists in a new sheet:
Put the dimension name in B2 ="Customer". (The available dimension names can be created dynamically as well, but I'm skipping this part for simplisity).
B3 (array formula - Ctrl+Shift+Enter) =IFERROR(INDEX(DimVal,SMALL(IF(DimName=B$2,ROW(DimName)-ROW(INDEX(DimName,1))+1),ROWS(B$3:B3)),1),""). This formula returns the k-th value for the "Customer" dimension.
Copy B3 down to as many rows you think you'll need. Let's say B4:B10, so B3:B10 will have the array formula. The first cells will have the available values and the remaining cells will be empty because of the IFERROR function.
In B1 we will count the available values using the formula =SUMPRODUCT(--(B3:B10<>"").
Do the same for "Product" and "Geography" in columns C and D.
Create dynamic named ranges for the lists: (using the Name Manager Ctrl+F3)
For the lists' data DimLists =B3:D10.
For the lists' headers DimListHeaders =B2:D2.
For the lists' counts DimListCounts =B1:D1.
*These names are mandatory for the data validation to work in another sheet.
Set table #2 data validation list sources:
Select B3:B10 in table #2.
Go to Data > Data Validation, and select Allow: List.
Put the following formula in the source: =OFFSET(INDEX(DimLists,,MATCH(B$2,DimListHeaders,0)),,,INDEX(DimListCount,,MATCH(B$2,DimListHeaders,0))). This formula finds the correct list in DimLists according to the column header in table #2, and also sets the returned range height according to the list count.
Hope this helps.

Resources