{ 29 comments }

What the IF? - learn 6 cool things you can do with excel if() functions

in Featured | Learn Excel | hacks | ideas | technology on June 9th, 2008


using excel if - cool tipsExcel has various functions, including functions to calculate inverse cosine of a given value, to multiply 2 matrices, to estimate the internal rate of return. But, most of us(well, just me then..) use just about 5-6 functions to do our jobs. And IF functions are a majority of these, so it doesn’t harm to learn a few interesting things you can do with just the excel IF functions.

1. Sum alternative rows / columns:

There comes a time when you are slapped with a sheet of data and need to sum every other row in it (dont ask me why, it happens, for eg. when you copy paste your credit card statement in excel), Ofcourse, we can always type the sum function with all those arguments, but we would rather chomp on that donut while excel does the dirty work for us. Thats why it helps to know that you can sum alternative rows / columns of data using sumif() function. Sumif function sums a range of data that meets a specific criteria. In our case the criteria will be, “if the data element is in odd number rows”.

howto-sum-alternative-rows-columns-excel-using-sumif

All you need to do is add an additional column at the end of the table and fill it with 1s and 0s. (just enter 1 and 0 in 2 rows, select both of them and drag till the end of the table). Now we can use this column to test our condition by writing the sumif function as =sumif(condition range, 1, sum range) [learn how you can highlight alternative rows / columns in an excel table]

2. Count how many times each item on list A is in List B vice versa

Often when you are working on data spread across multiple sheets, it helps to know how many times each item on one list is repeated in another list(s). This can be done easily using a good old countif function. Excel countif function counts data that meets a specific criteria.

learn how to using-countif-ms-excel-function

In the above example, I have used countif function to findout how many customers are there in each city (where customer data is in List B and city data is in List A). The formula looks like =countif(condition rage, condition), eg. countif($g$32:$g$47,"chicago") would tell us how many customers are in Chicago.

3. Quickly Summarize Data with countif / sumif:

Now that we have figured out how to use sumif and countif, you can use these two functions to create quick summary of your data.

For example, we can findout, average sales per customer per city dividing total sales data per each city (obtained using a sumif) with total customers in that city (obtained using a countif) as shown below. This can be a quick way to do pivot analysis of data without actually using excel pivot tables (very useful if you are allergic to excel pivot tables or not very happy using and constantly updating them)

data analysis with countif sumif spreadsheet functions

4. Lookup second, third … nth occurrence of an item in a list in excel:

Often we work with data that has lot of duplicates, for eg. customer phone number data that has grown over a period of time with new numbers added at the bottom of the list. Getting second, third, fourth or nth occurrence from the list can be tricky, by using a combination of countif and vlookup we can lookup nth occurrence from a list.

First in our data list we will insert another column and place the formula =current-item&countif(range till that point, item), this will append the number of smiths till that point to the end of smith, thus first smith would become smith1, second smith would become smith2, so on…

4-find-second-third-nth-occurance-using-vlookup

Next, when looking up smith instead of using the initial column of customer data we will use our modified customer data to fire the lookup, for eg. vlookup("smith3", lookup range, 2, false) would tell us the 3rd phone number of smith. Note the last argument to the vlookup as “false”, since our list may not be alphabetically sorted, we have to use “false” to force excel to keep looking till it finds the 3rd smith row.

5. Reduce your nested if()s to one function

Do you know that you cannot next excel if functions beyond 7 levels? Thankfully, most of us never go beyond 3 or 4 levels. But why write even that many levels when you can use choose() function, which is like a switch structure in programming. A typical switch function would look like, =switch(condition, outcome1, outcome2, outcome3...), for eg, =switch(3,"good","average","poor") would return “poor” when used. The only limitation to the switch() excel function is that it accepts numbers for testing the condition. But you can overcome this with some creativity, like I have shown in the below student letter grading example:

5-using-excel-choose-function

How did I convert the letter grade to a numeric in the choose(), well thats for you to figure out :)

6. Now, lets learn the most important Excel IF function tip

Well, that is for you to tell me. What is your favorite Excel IF function tip / usage? Share it in the comments, let everyone know

I have prepared an excel sheet with all these if function examples, Click here to download it and experiment.

Also Read:
Become a conditional formatting rock star - learn these 5 cool tips
73 free excellent excel chart templates, save time, look smart!

Subscribe for PHD Email updates and get a free excel e-book with 95 tips & tricks
Delicious Stumble it

« Prev | Home | App. idea for iPhone developers (for other location aware phones as well) »

Have an Excel Question?

Custom Search


Trackbacks & Pingbacks

Comments
John Satta June 9, 2008

Just wanted to say I love your excel tips - always thought I was an excel guru, but my hat is off to you!

Wish I could think of a good IF tip so I could contribute :-(

Great stuff - keep it up!
-John

Dissappointed M&A part III June 10, 2008

Buddy,

- Thought this would be the best place to catch you as this is the only place i can find that u still come. Did you get a chance to go through the “viral note” i had send you. Well the note was prepared when i was down with viral fever and had nothing else to do.

But my excel demi god i didn’t realise you would eat it up with your ever increasing hunger for useless stuff and discharge it the next day. No response to my sms, or any of the messenger msgs.

Waiting for your blessings like a melancholic lover for his maiden to return

Keith Dsouza June 10, 2008

Nice tips, most of them will be quite useful to me :)

Chandoo June 11, 2008

@John Satta … that is so kind of you, thanks for your comments.. :)

@Keith … Welcome to PHD, thanks :)

@M&A … hehe, responded.. stop being cryptic and come out in public :D

Anelisa August 11, 2008

I would like to determine a catergory by selecting the first two digits from a figure e.g. from 011000, 020000 - if it’s 01 then I’ll write Educator in another collumn next to the figure, 02 = Practitioner.. etc

Chandoo August 11, 2008

@Anelisa: Hope you have already figured this out, otherwise here is how you can do this:

=if(left(figure,2)=”01″,”Educator”,if(left(figure,2)=”10″,”Practitioner”…

let me know if this doesnt help :)

guest November 19, 2008

Nested if’s:
Nice, but still suffering from the limitations of choose (29 param’s max)!
Why not using index:
=INDEX(grades;CODE(D99)-64;)
where grades is the matrix with the grades?,
drefsa

Ketan November 19, 2008

@ guest :
You may use the offset command too
=offset(grades;CODE(D99)-64;)
Where grades is name of cell below which all the required grades written for A,B,C,D,F….

guest November 19, 2008

@ ketan,
sure, works as well.
My inital comments was meant to be as close to the logic of the examples given as possible.
generally I cannot befriend myself with more than 3 nested ifs. better to switch to index, offset, or vlookup solutions for numerous reasons.
But I have question though:
the code() function uses the ANSI - set on windows. What about other systems like MAC? Is it returning the same results? Sorry-but I am lacking a MAC…
drefsa

Chandoo November 19, 2008

@Guest: Welcome to PHD and thanks for sharing your ideas. I like the index, lookup based solutions compared to normals ones. But as with any solution these are also good for a particular context - in this case, large enough data.

Btw, CODE() returns ASCII code of the character in the input and it has got nothing to do with the computer you are using. ASCII is a standard code across all computers and used to represent various characters with numeric (actually hex) values for internal representation.

guest November 19, 2008

Chandoo,
you are right, a solution always depend on the given problem.
One thing puzzles me:
in the German XL-help it says for Code(): WIndows Ansi, MAC Mac charset.
If the numbering is of the characters is the same all will work fine of course. Just wondering.
drefsa

Chandoo November 19, 2008

@Guest: I am sorry for misleading you. You are right. CODE() returns ANSI or Mac Character codes based on the system you use.

But thankfully, they return value would be same for most of the day to day characters and is equal to ASCII code.

There are quite a few standards when it comes to internally representing characters in 8 bits - like ANSI, ASCII, MacRoman Set, ISO-8859-1 etc.

See this for more: http://www.alanwood.net/demos/charsetdiffs.html#f

but rest assured as for most values code() would return same output no matter what OS you are using.

guest November 20, 2008

chandoo,
thx! that’s a useful link.
I’ll check out the “non-conformities” eventually. In my opinion it is just iseful to be really clear on the potential pitfalls of a method. On the hand: XL sometimes reminds me of a inexhaustible bag of surprises ;-))
btw: like ur blog
drefsa

CraigM December 5, 2008

Chandoo thanks for this.

I have a fairly large spreadsheet that this has helped greatly speed my work up.

There are a couple of things that would make it complete. I have about 7 different items that I would like the high, low and median prices for. Is their an easy way, not unlike this, that will extract them from an unsorted list?

Thanks

Craig

Satish December 23, 2008

Dear Chandu,

I like you simple and direct examples, I am still mid-way, I liked you example No 3 in this Page( 6 Cool things you can do with Excel if() )

Here In this Example I like to add one more Column K with the Data “New” and “Old”, Maybe Column Heading will be “Cust Type”.

Now I need to have the Total Sales in Column G, with only “New” Customer of that City. How can I make this Condition,

Pls note , I don’t want to Filter the “Cust Type” /Column K
(I also think in the Range Filter will not work).

regards
Satish K
Mysore

Chandoo December 24, 2008

@CraigM: I hope you got your answer. Sorry for the delay in response. Whether you have 7 items or 70 items, using max(), min() and average() functions on the range will extract the maximum, minimum and average values for you. If you need median value, try the median() function. Since all these functions accept ranges as inputs, they are very easy to use and extend to tables.

@Satish: Welcome to PHD Blog. Thanks for asking your question.

Unfortunately sumif() in excel only accepts one condition range. That means we need some tweaks to get new customer sales per city. Here is how I would do it.

Add another column named type-city and use a formula like this to fill that column: = customer-type & “-” & city
so it will have values like New-Columbus, Old-Washington etc.

Now in the sumif() we will give this new column as condition range and for the condition value we just add “new-” before the city name we want the sum for. For eg. =sumif(type-city-list, “new-columbus”, sum-values) will tell us how much sales came from new customers in columbus city from the list.

Let me know if you have some difficulty implementing this.

Satish December 24, 2008

Thanks Chandoo
for the Work around, solun I will try implement it .
Happy Holiday

regards
Satish K

Asad July 2, 2009

Thank a lot for this.I appreciate your work..
God Bless You..!

RSS feed for comments on this post. TrackBack URI

Leave a comment

   Name (required)

   E-mail (required, never displayed)

   URL


Join Our Community