MS Excel Forumlae - excel

I have always used Excel for basic forumlae functions. I havnt needed to use advanced forumlae's before to gather information. However, today I do and I have been looking at Google for a while for the answers. Managed to work out a few things I needed. I am trying to do something else now. I will try and describe the situation.
I have two seperate spreadsheets - an old one and a new one. They both have the same columns. However, the newer one has recent up to-date information.
The old document looks something like this:
Column A | Column B | Column C | .... | .... | .... |
Fixed 726495 ........
Stuck 728496 ........
Fixed 274569 ........
Fixed 357697 ........
..... ...... ........
The new document and what I want it to do will look something like this.
Column A | Column B | Column C | .... | .... | .... |
Fixed 726495 ........
Stuck 728496 ........
Fixed 274569 ........
NEW 974865 ........
..... ...... ........
As you can see what the new document has done is compared Column B in both documents and retreived Column A's information to that match. If it doesnt match and cant be found because its new information it will simply say "NEW". all this information is under filters so Im not sure if that makes it more difficult?
Just a background to help. I am working on a new spreadsheet system for checking if patients have already had their operations and if they have I check them in and out retrospectively. All the ones that say fixed shouldnt show up on the newer spreadsheet unless they are "Stuck" which I will have to check later on down the line. Since hospitals at the moment are understaff nurses may not admit and discharge patients properly so I have to go back and remedy the situation.

Use this formula in second workbook in cell A1 and drag it down:
for Ecxel 2007 or later:
=IFERROR(INDEX([Book1.xlsx]Sheet1!$A:$A,MATCH(B1,[Book1.xlsx]Sheet1!$B:$B,0)),"NEW")
for Excel 2003:
=IF(ISERROR(INDEX([Book1.xls]Sheet1!$A:$A,MATCH(B1,[Book1.xls]Sheet1!$B:$B,0))),
"NEW", INDEX([Book1.xls]Sheet1!$A:$A,MATCH(B1,[Book1.xls]Sheet1!$B:$B,0)))

Related

Excel: How do i auto extract updated info from the main sheet to individual sheets

I am currently doing a sales summary consist of lots of customers, and I am trying to find a way to automatically update the value from the main sheet to individual customers sheet as there are too many customers for me to do that.
The Main Sheet would look like like this with headers
| Serial| | Date | | Customer Name| | Product Info|
| 001 | |Jan4th| | Mike | | Apple |
i am trying to create a formula so that the other individual sheet could only extract rows that was from only the customer (Mike), and other sheets would be of other customers as well.
It would help a lot if the formula can auto add in value that would soon be update as well, as other method i found only able to distribute available values, and when there are new value to be add, i have to repeat the process again which is not effiecent given the number of customers i have to summary for
If not formula then any other method would help too, but VBA is a bit above my capability so if you can provide detail for how i can make use of it, it would be delightful
If anyone can come up with anything i would be grateful, thank you for your attention
i have tried the copy paste link but they do not auto update new value after the paste.

How to merge data of two excel sheets into the third sheet with some cleansing operations

I have a homework assignment where I have to merge data of two excel sheets by performing some cleansing operations using formulas.
Sheet 1:
OrderID | Full Name | Customer Status
1001 Waqar Hussain Silver
2002 Ali Moin Gold
Sheet 2:
OrderID | First Name | Last Name | Customer Status
A1003 Junaid Ali 2
A2004 Kamran Hussain 1
Sheet 3:(Combined Sheet) - Expected
OrderID | Full Name | Customer Status
1001 Waqar Hussain Silver
2002 Ali Moin Gold
1003 Junaid Ali Silver
2004 Kamran Hussain Gold
There are probably a lot of ways to do this. First make sure the data is cleaned. If you are already 100% positive the data is clean you can skip this step. If you aren't sure it's better to be safe than sorry. For each column create a new column using the CLEAN and TRIM functions to remove any non-printable characters and any extra spaces. Something similar to =TRIM(CLEAN(A2)). Then drag the formula for each cell.
After this in order to merge the data together we need something to join on. The full name seems to make the most sense. On sheet two we'll write a new function to join the first name and last name together. The =CONCAT formula should work.
=CONCAT(First Name, " " ,Last Name). Make sure to note the extra space added by the quote. That way it matches the Full Name from Sheet 1. Looks like we'll also need to strip out the letter from Order ID in sheet 2. I'm going to assume that all Order IDs are 5 characters long. If this isn't true then you'll need a different solution. You can use =RIGHT(A2,4). This will grab the right 4 characters from the text string.
At this point let's create a distinct list. Copy the Full Names from Sheet1 and Paste them on to sheet 3. Copy the Full Names we created on Sheet2 and Paste VALUES onto sheet 3 below the full names from sheet 1. Then select all the rows in the column and go to the Data tab. Click "Remove Duplicates". This will now generate a distinct list of values.
We can now merge the data together using an INDEX MATCH. There are lots of great tutorials on how to use INDEX match in combination. It's a little long to explain on this thread, but this is a great thread explaining how it works. It's worth taking 10 minutes to fully understand it because it is a formula you will use thousands of times throughout your life.
https://www.deskbright.com/excel/using-index-match/
Let me know if I can clarify anything.
Best,
Brett

Excel: View clients who don't have a product

I have a table of clients and the products that they have purchased.
I'm looking for a simple way of being able to filter to view all clients who don't have a certain product.
Client | Product
------ | ------
John | A
John | B
John | C
Kate | A
Kate | B
Kate | D
Mary | A
Mary | D
With the above example I would want to look for which clients do not have Product -> C, the return I'm after is Kate and Mary.
I've tried looking at this in a few different ways but I feel I'm over complicating it. I was creating a table to return who has the product then doing a lookup from there against another table of all users to then find out who wasn't in the first list.
I tried using a pivot table to get what I was after but I'm only able to return who has the products rather than who doesn't, also filtering product C from the pivot table does not help as the Client still shows up having other products.
I'm hoping there is an easier way to do this.
Your assistance is appreciated.
Dane
COUNTIFS should to the trick here.
You have one cell where you enter the product to look for. Then you add a column to your table that checks if the client does not have that product.
=COUNTIFS([Client],[#Client],[Product],referenceToTheProductToLookFor)=0
This will count the rows where
the entry in the column "Client" is the same as the value in the column "client" in the current row ([Client] references the whole column, [#Client] only the current row's value of that column)
the entry in the column "Product" is the same as the one entered in your input cell
and checks if the resulting count is 0. If it is 0 the cell value will be TRUE, otherwise it will be FALSE.
If you want to avoid having to make two steps each time you change the product you are looking for (1. enter the product, 2. update the filter on the table) you could use the worksheet's On_Change macro to detect changes to the product code and then automatically update the filter on the table.

Searching in Excel for certain values, if found give text from cell to the left of where we found the value

First let me explain what I want to achieve.
I currently have an Excel like this:
Names | Standards
James | Standard 1
James | Standard 2
James | Standard 3
Francis | Standard 1
Francis | Standard 2
Francis | Standard 3
Leon | Standard 2
Leon | Standard 3
Peter | Standard 2
Michael | Standard 3
And I want to create something like this:
Standard | Name 1 | Name 2 | Name 3 | Name 4
Standard 1 | James | Francis | |
Standard 2 | James | Francis | Leon | Peter
Standard 3 | James | Francis | Leon | Michael
My real Excel has more than 300 standards, so I would like to automate this using Excel Formula. I know this is possible, but I haven't used Excel in a while, so I could use a push in the right direction.
Couple of things I need (I think):
Need to count how many times people in the names column mention a standard. So I want to know that I need 2 names for standard 1 and 4 for standard 3. I think I can do this by using the COUNTIF method.
We need to search for the location of the standards. I think I can do this by using the Match function. This gives us the location of the first match in my original Excel. By sorting my original Excel a-z and combining it with the countif result I know where all the matches are (first match + countif = location of the last match, and everything inbetween is also that standard).
For the first name that mentioned a standard, I will reference the cell left of the first match (because the names are in the cell to the left of the standard I found). For the second name I will reference the cell left of the cell below the first match. I keep doing this till I find as many names as Countif mentioned. So I need an IF statement that makes sure that if 2 people mention standard 1 only gets 2 names and 2 cells with a "".
How will I reference the cells? By another if statement that uses this: Excel Reference To Current Cell , Correct me if I am wrong, but can't I then just say THIS.CELL=cell location I found (probably should use INDIRECT here?).
This is just me brainstorming, but I would love to know if people have any other ideas for my problem or have some feedback for my current plan.
An important thing to mention is that I want to do this using Excel Formula. I do realise that this isn't always the best, but VBA is not an option atm. I am also not worried about performance issues, because I think i'll just copy all the values after I found all the names using formulas.
Thanks in advance!
Depending on how you want to have the layout, I think you should use a pivot table. Drag the 'Standards' and 'Names' fields to the 'rows' data box and then right-click on a standard, click 'Field Settings' - 'Layout and Print' - 'Show item labels in tabular form'. (See example below.)
If you definitely need the data in the format in your question, I would edit the pivot table by dragging the 'names' field to the 'columns' data box. Then drag the 'standards' field from the field list above a second time and duplicate it in the 'values' box (see example below).
In the space underneath the pivot table, use an IF formula to only copy the name if there is a 1. This kind of approach will obviously be quite fragile, so if you can make do with the first approach, I think you will run into fewer problems in the future.

Excel Formula for dynamic columns

I'll try to make sense of this the best I can. I'm pretty horrible at making things clear. :) So...here it goes....
I have a spread sheet that is a list of seeds I have for growing peppers. Here are the columns I have, and I will explain more after.
Crop | Color | Generation | Species | Source | Scoville | Flavor | Heat | Notes | 2012 Type | 2012 Name 1 | 2012 Name 2 | 2013 Type | 2013 Name 1 | 2013 Name 2 | etc.
Ok. So "2012 Type" is a list that will contain either a blank, "N", "O", or "M". All I care about is whether it is blank or not for this question. If it is NOT blank I want to highlight the Crop name with a green background to show that I have grown this crop. To do that through the Conditional Formatting is a no brainer. However, my issue begins when I, as usual make things more complicated. When I add "2013 Type", "2014 Type", etc. I want to check for those also. So then my formula becomes an OR; is there a value in 2012 or 2013 or 2014, etc. Part of question is that. How do I write a formula that is dynamic enough to pickup the new fields I add each year...2015 Type, 2016 Type...etc.?
I also have a ton of other stuff going on, but I think I may have that figured out...sort of.
Thank you for your help, appreciate it.
Edit: Okay. I feel I need to explain how I am trying to develop my whole worksheet, one to check my thinking, and two to clear up the goals.
In addition to what I have explained above, I have tabs that read 2012, 2013, grown, not-grown, MasterList, and Criteria.
MasterList is what we are talking about here.
Criteria is what I am using for an advanced filter to copy crops that to the appropriate sheets. So, if I have a a crop marked in column "2012 Type", then it will be copied to the 2012 sheet. It will also be listed under the tab Grown. Same if it were marked under "2013 Type" etc.
Basically, I am using tabs to filter out specifics from my MasterList so that I can find what I'm looking for quickly, or view everything as a whole.
Once again, I am great at making things over complicated. Couple that with the fact that I am still fairly new to Excel coding...and you have a disaster. :)
Thank you all for listening. :)
Try using a COUNTIFS formula in conditional formatting, e.g. this formula
=COUNTIFS($1:$1,"*Type*",2:2,"<>")
....will count the number of cells in row 2 which have some value....and where row 1 has "type" contained in the header row for the same column.
For your condition you want to know whether the result of the COUNTIFS formula is zero or not (zero signifying no entries in any of the type columns for that row) so for green use
=COUNTIFS($1:$1,"*Type*",2:2,"<>")>0
Note: COUNTIFS is only available in Excel 2007 and later, for earlier versions you can use this formula
=SUM(ISNUMBER(SEARCH("type",$1:$1))*(2:2<>""))>0
Actually for an annual exercise I would just go for amending the conditional formatting as part of your procedure when you add the columns with the OR in it as you mention it.
The condition should be (as you probably already know):
=OR(ISBLANK($J2),ISBLANK($M2))
I'll have another thought about making it smarter but I have a feeling already that will involve some more coding and such, making the effort for this bigger then the benefit for the annual updates.
You might consider reformatting your data so that it only grows in the row direction and not the column direction. I'm thinking
Crop | Color | Generation | Species | Source | Scoville | Flavor | Heat | Notes | Year | Type | Name 1 | Name 2
Then you could use pivot tables, formulas, and array formulas to present the data in various ways.
I would create a worker column(you can always hide it later) that concatenates all your Type columns together into one column:
=CONCATENATE(K2,N2,Q2,T2,W2,Z2,AC2,AF2,AI2,AL2,AO2,AR2,AU2,AX2)
=$A$2:$ZZ$10000
=IF($A2="",FALSE,TRUE)
It's important that you enter the formulas and conditional format formulas and applied to range accurately - with the correct syntax(notice the use of $).
Good Luck.

Resources