By integrating services like Google Finance, Search in to spreadsheet functions, google docs has paved the way for endless possibilities.

Google spreadsheet function GoogleFinance() can be used to build stock portfolio tracker sheet that can fetch historical stock quotes to tell how your money is doing.
Click here to see the stock portfolio tracker sheet on Google docs.
Here is how you can create a simple stock / mutual fund / asset tracker application using Google docs:
1. Create the stock portfolio tracker table structure
A typical portfolio tracker has the following columns:
- Name of the asset – Stock name, MF name etc.
- # of units / shares held
- Purchase date
- Purchase price (will be fetched from GoogleFinance using formulas)
- Current price (also fetched from GoogleFinance)
- Gain / Loss % and values
![]()
2. The formulas to fetch current and historical quotes
Assuming the stock / company symbol as per the listing exchange is in cell B2 and purchase date is in cell C2, we can fetch historical stock price for that symbol on purchase date by the formula,
=GoogleFinance(B2,"price",C2)
But there is a problem with this formula as result is not single cell, but a 2×2 range as shown on the right.
It returns date and price in 2 columns. We are only interested in the price of the stock on that date (ie bottom right cell in the returned range). We can fetch that value by using concatenate(), find() and mid() functions to parse out the required text. So the formula now becomes:
First in cell M2 we enter =concatenate(GoogleFinance(B2,"price",C2)) and then in the cell where the historical price is needed we enter =value(mid(M2,3+find(":",M2,1+find(":",M2)),99))
In order to fetch the current stock price we just need to enter =googlefinance(B2)
Note: Make sure that you use correct symbols for stocks / mutual funds and mm/dd/yyyy date formats for purchase date.
3. Finally add Gain / Loss calculations
This is a simple step where in we compute value on purchase and value today and then use them to compute Gain / Loss. We can modify the table to add some conditional formatting so that when a loss is made the numbers are in red color.
4. Enhancing the Portfolio Tracker
That is all. This is how we can create a simple stock portfolio tracker. But there are several interesting ways in which you can extend this.
- Add a spreadsheet form and use that to record stock purchases.
- Perform a thorough analysis of your holdings, research the companies, price trends etc. without leaving the spreadsheet.
- Get alerts when a price threshold is met, through RSS / email updates
- Add some graphs to see how / where your money going
Looking for a way to track stock / MF performance from excel, read this.













21 Responses to “How to Filter Odd or Even Rows only? [Quick Tips]”
Infact, instead of using =ISEVEN(B3), how about to use =ISEVEN(ROW())
So it takes away any chance of wrong referencing.
I like Daily Dose of Excel
I like it.
Just a heads up, you do need to have the Analysis ToolPak add-in activated to use the ISEVEN / ISODD functions. An alternative to ISEVEN would be:
=MOD(ROW(),2)=0
rather than use a formula, couldn't you enter "true" in first cell and "false" in the second and drag it down and than filter on true or false.
Just for clarification, is Ashish looking to filter by even or odd Characters or rows?
so many functions to learn!
Nice support by chandoo and team as a helpdesk. Give us more to learn and make us awesome. Always be helpful.......
In case you want to delete instead of filter,
IF your data is in Sheet1 column A
Put this in Sheet2 column A and drag down
=OFFSET(Sheet1!A$1,(ROWS($1:1)-1)*2,,)
(This is to delete even rows)
To delete odd rows :
=OFFSET(Sheet1!A$2,(ROWS($1:1)-1)*2,,)
If your numbered cells did not correspond to rows, the answer would be even simpler:
=MOD([cell address],2), then filter by 0 to see evens or 1 to see odds.
I sometimes do this using an even simpler method. I add a new column called "Sign" and put the value of 1 in the first row, say cell C2 if C1 contains the header. Then in C3 I put the formula =-1 * C2, which I copy and paste into the rest of the rows (so C4 has =-1 * C3 and so forth). Now I can just apply a filter and pick either +1 or -1 to see half the rows.
Another way, which works if I want three possibilities: in C2 I put the value 1, in C3 I put the value 2, in C4 I put the value 3, then in C5 I put the formula =C2 then I copy C5 and paste into all the remaining rows (so C6 gets =C3, C7 gets =C4, etc.). Now I can apply a filter and pick the value 1, 2, or 3 to see a third of the rows.
Extending this approach to more than 3 cases is left as an exercise for the reader.
Another way =MOD(ROW();2). In this case, must to choose betwen 1 and 0.
[...] How to Filter Even or Odd rows only [...]
very different style Odd or Even Rows very easy way to visit this site
http://www.handycss.com/tips/odd-or-even-rows/
Thanks for the tip, it worked like magic, saved having to delete row by row in my database.
Thanks!
Thankssssssssssssssss
Hi Chandoo- First of all thanks for the trick. It helped me a lot. Here I have one more challenge. Having filtered the data based on odd. I want to paste data in another sheet adjacent to it. How can I do that?
For Example-
A 1 odd
B 3 odd
C 4 even
D 6 even
I have fileted the above data for odd and want to copy the "This is odd number" text in adjacent/next sheet here. How can I do that. After doing this my data should look like this
A 1 odd This is odd number
B 3 odd This is odd number
C 4 even
D 6 even
Hi! Could you please help me find a formula to filter by language?
Thank you!
Chandoo SIR,
I HAVE A DATA IN EXCEL ROWS LIKE BELOW IS THERE ANY FORMULA OR A WAY WHERE I CAN INSTRUCT I CAN MAKE CHANGES , MEANS I WANT TO WRITE ONLY , THE FIG IS FRESH, BUT IN BELOW ROW IT WILL AUTOMATICALLY TAKE THE SOME WORDS FROM FIGS AND MAKE IN PLURAL FORM , WHILE USING '' ARE'' LIKE BELOW
The fig is fresh - row 1
Figs are fresh - row 2
The Pomegranate is red - row 3
Pomegranates are red - row 4
=IF(EVEN(A1)=A1,"EVEN - do something","ODD - do something else") with iferron (for blank Cell)