Stock Screener for Excel with Automatic Data Download

This Excel spreadsheet provides a stock screener that automatically downloads stock quotes for over 6800 ticker symbols. The data is downloaded from into the “Data” sheet, and a filter table is automatically created.

All the data for the 6800 ticker symbols is saved in the spreadsheet. This means you only need to update the quotes once a day, or whenever you want updated quotes.

The data includes over 60 items for each ticker symbol, including the P/E Ratio, Dividends, EPS, Sales growth over the last five years, stock beta, 20- and 50-day moving average and much more. There’s a real wealth of data and technical indicators.

Stock Screener Excel

If you type in a ticker symbol into the “Parameters” sheet, the spreadsheet will pull out the appropriate stock quotes. More over, the spreadsheet will also give stock quotes for all the companies in the same industry as the ticker symbol.

Stock Screener Excel

This lets you quickly see how well (or badly) your chosen company is doing with respect to its industry competitors.

The data download and screening is automated in VBA. Please let me know if you have any comments.

Download Excel Stock Screener

35 thoughts on “Stock Screener for Excel with Automatic Data Download”

  1. This looks like a great resource. However, when I try to update data, all new comma separated values are placed on first column (A) on Data Tab. Using Excel 2010. Already tried using US formatting for workbook, same result. Any idea?

  2. I discovered that if I update using the buttton “Update Stock Quotes”, data is updated with no problems at all. Errors appear if update is done from Data > Refresh All. Great tool!

    • I’ve only ever tested the worksheet with “Update Stock Quotes” (never thought about using Data > Refresh All). In fact, I explicitly state in the worksheet that you should use “Update Stock Quotes” to get new data.

      • Hi Samir,

        Is there a way of getting this same data for Australian stocks from Yahoo, for the stock screener for Excel spreadsheet, as FINVIZ only has about 11 AU stocks listed. I would like to get data of all stocks for the following AU indices:
        Symbol Name Last Trade Change Related Info

        ^ATOI S&P/ASX 100

        ^ATLI S&P/ASX 20

        ^AXJO S&P/ASX 200

        ^AXKO S&P/ASX 300

        ^AFLI S&P/ASX 50

        ^AXMD S&P/ASX MIDCAP50 4


        Is this possible. Any help/comments on this would be greatly appreciated.



  3. Samir,

    Thank you so much for the great file.

    On the “data” tab, is there any way I can insert a custom column within the sheet (EX. VOL/AVG. Daily VOL)? When I attempted to do this it would not drag the value down. It’d be great if you knew a way that I could do this and have the column update when I update the sheet. Let me know your thoughts.

    Thank you

  4. Hello Samir,

    Thanks for providing the great tool!! Highly appreciate on getting this tool developed an available to us…

    Can I add additional tickers in the Data Tab?
    The VBA code is password protected. IS there a way that I could add or change the VBA code to meet my additional requirements?
    Is this works only for the US or other countries Like UK or EUROPE contries.

    Thanks & Highly appreciate all the work and effort put into this tool..


    • PVR

      I provide a service where I modify any of the spreadsheets on this site and provide the full VBA source code. Email me for more information, with details of what you’re looking for


  5. Hello Samir,
    I am using this workbook and hoping to make a this sheet that will use vlookup to pull data from the data sheet. initially date comes back correct but once stock prices are updated I recieve “#REF”. When i look into my v lookup formula instead of DATA! it changes to #REF. is this because the data sheet is essentially deleting and remaking itself? what can i do to fix this? (I am a novice)

    This is my formula as of now.


    • Create a Namespace that refers to the data range. Say, DataFV set to equal Data!$A$2:$BP$9999
      Use the name manager. Since the number of rows changes regularly, just set them high enough to be inclusive of any changes, say 9999.



      Then the results will just go blank when the data is deleted and will update on the next spreadsheet calculation after the data is downloaded again. In my own spreadsheets when I download finviz data, I do a Cells.ClearContents on the sheet with the data. The makes it so formulas like your won’t break.

  6. Hi Samir,

    I would like to enquire how do I use the Stock Screener to gather data for all the tickers that are listed in your Yahoo Ticker worksheet? Each time I pressed Update Stock Quotes, it will give data for 6,831 stock tickers. I would like to find out how I can cover the full range in Yahoo ticker symbols.

    Thank you.

    • The spreadsheet downloads a dump of company financial information from Finviz. This doesn’t include the entire universe of securities/tickers understood by Yahoo.

      There’s no way around this apart from reprogramming the spreadsheet to download company financial information from Yahoo instead (and unless someone pays me, I won’t do that)

  7. I love this spreadsheet. Is there a way to have more than one stock listed under stock quotes? Also is there a way to rearrange the columns so I can move the ones I like closer to the start?

    Thank you.

  8. Great spreadsheet – but today, it has ceased to work. I suspect a change at Finviz….

    It would be greatly appreciated if this could be investigated.

    thanks in advance,

  9. Thanks Samir for the great spreadsheets! I really liked using this one. It would be great if you knew another way to get similar data…


  10. What a clever idea. I wish it still worked. Well, please notify me if you make another spreadsheet like this that is up and running.

  11. Hallo,

    The stock screener data is out of date. Data is from 2012. Is is possible to update this sheet? Many thanks for uploading the sheets on your site by the way. Great work!

  12. 1) Does your FinViz macro work if the user is logged in to a paid FinViz account?

    2) How soon were you planning to upload an unlocked version?

    • 1) I don’t know. I don’t have a FinViz account (can’t justify the cost just to see if this spreadsheet will work and/or develop a workaround)
      2) Just uploaded a new unprotected version

  13. Every time I try and run the macro I get an error saying your browser is no longer supported. Any suggestions on what to do? I’m running Internet Explorer 10.

  14. I have the same problam,
    Every time I try and run the macro I get an error saying your browser is no longer supported.

    do you have any suggestions?

  15. Even though the tool Samir built is locked down behind Finviz’s paywall, you can still pull Finviz data in Excel. It’s not bulk data, but I use it to track my investments across multiple accounts. In this case, I have a fixed # of tickers I care about & I can update the query fairly easily as that finite universe of stocks changes.

    1. Open a new sheet.
    2. Build a web query (Data/From Web).
    (where “xxx” is the rest of your comma-delimited list of stock tickers)

    The downside is that Finviz doesn’t have mutual funds.

  16. Hi there Samir

    Superb website – I love what you’re doing!

    I live in the UK and use Yahoo finance to check balance sheet data for multiple UK shares. As you can imagine, it is a laborious task! FinViz unfortunately doesn’t list UK shares.

    Would it be possible to create a spreadsheet but for Yahoo so that I can access UK shares balance data for both their Annual and Quarterly updates?

    This is the website I use.

    As you can see at the top, it has a link to go from Annual to Quarterly data.

    Many thanks and congratulations for such a superb website!


  17. I have just come across this today and look forward to a couple ideas. I myself will likely, will absolutely purchase a membership that you, Samir, I will give credentials to.

    In the meantime, is there not one other person here who pays for the hard work of others?

    Five years ago, and not one person willing to pay, yet all are begging for someone else to do it.
    You’ve all been very polite and I apologize because as I re-read this, I see how it could be seen as patronizing when in fact it is actually a very honest question provided in good faith. 🙂
    Thank you Samir,
    Justin Barracosa


Leave a Comment

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.