Excel function to list files in a folder without VBA

Excel FILES Function

Listing the files in a folder is one of the activities which cannot be achieved using normal Excel formulas.  I could tell you to turn to VBA macros or PowerQuery, but then any non-VBA and non-PowerQuery users would close this post instantly.  But wait!  Back away from the close button, there is another option.

For listing files in a folder we can also use a little-known feature from Excel version 4, which still works today, the FILES function.

The FILES function

If you search through the list of Excel functions, FILES is not listed.  The FILES function is based on an old Excel feature, which has to be applied in a special way.  The instructions below will show you step-by-step how to use it.

Create a named range for the FILES function

The first step is to create a named range, which contains the FILES function.  Within the Excel Ribbon click Formulas -> Define Name

FILES - Define Name Ribbon

Within the New Name window set the following criteria:

  • Name: listFiles
    Can be any name you wish, but for our example we will be using listFiles.
  • Refers to: =FILES(Sheet1!$A$1)
    Sheet1!$A$1 is the sheet and cell reference containing the name of the folder from which the files are to be listed.

FILES - New Name listFiles

Click OK to close the New Name window.

Apply the function to list files

The second step is to set-up the worksheet to use the named range.

In Cell A1 (or whichever cell reference used in the Refers to box) enter the folder path from which to list the files, followed by an Asterisk ( * ).  The Asterisk is the wildcard character to find any text, so it will list all the files in the folder.

Select the cell in which to start the list of files (Cell A3 in the screenshot below), enter the following formula.


FILES formula - first result

The result of the function will be the name of the first file in the folder.

To retrieve the second file from the folder enter the following formula


It would be painful to change the file reference number within each formula individually, especially if there are hundreds of files.  The good news is, we can use another formula to calculate the reference number automatically.


The ROW() function is used to retrieve the row number of a cell reference.  When used without a cell reference, it returns the row number of the cell in which the function is used.  When used with a cell reference it returns the row number of that cell.  Using the ROWS function, it is possible to create a sequential list of numbers starting at 1, and increasing by 1 for each cell the formula is copied into.

If the formula is copied down further than the number of files in the folder, it will return a #REF! error.

FILES with errors

Finally, wrap the formula within an IFERROR function to return a blank cell, rather than an error.



Listing specific types of files

The FILES function does not just list Excel files; it lists all file types; pdf, csv, mp3, zip, any file type you can think of.  By extending the use of wildcards within the file path it is possible to restrict the list to specific file types, or to specific file names.

The screenshot below shows how to return only files with “pdf” as the last three characters of the file name.

FILES with wildcards

The wildcards which can be applied are:

  • Question mark ( ? ) – Can take the place of any single character.
  • Asterisk ( * ) – Represents any number of characters
  • Tilde ( ~ ) – Used as an escape character to search for an asterisk or question mark within the file name, rather than as a wildcard.

The screenshot below shows how to return only files with the name of “New York.“, followed by exactly three characters.

FILES with wildcards 2

Formula Magic with Dynamic Arrays

Of all the features available in Excel dynamic arrays provide the most power for the smallest time investment.  Yet most Excel users do not even know what they are.

Have you ever faced these spreadsheet scenarios?

  • How can I use VLOOKUP to return all the matching items, not just the first?
  • How can I sort my information using a formula, so I don’t have to keep clicking the sort button?
  • How can I quickly create unique lists of items to use with my SUMIFS calculation?
  • How can I stop copying down formulas every time my source data changes.
  • How can I build a PivotTable-like report, but using formulas so I don’t have to click refresh ever again.

Well, I’m here to give you some good news. with dynamic arrays, all these can be achieved easily 🙂

Advanced uses for the FILES named range

Below are some ideas of how else you could use the FILES function.

Count the number of files

The named range created works like any other named range.  However, rather than containing cells, it contains values.  Therefore, if you want to calculate the number of files within the folder, or which meet the wildcard pattern use the following formula:


Create hyperlinks to the files

Wouldn’t it be great to click on the file name to open it automatically?  Well . . . just add in the HYPERLINK function and you can.

FILES with hyperlinks

The formula in Cell A3 is:


Check if a specific file exists within a folder

It isn’t necessary to list all the files to find out if a file exists within the folder.  The MATCH function will return the position of the file within the folder.

FILES with MATCH function

The formula in cell B3 is:


In our example, a file which contains the text “New Yor*” exists, as the 7th file, therefore a 7 is returned.  Cell B4 displays the #N/A error because “Seattle” does not exist in the folder.

Find the name of the next or previous file

The files returned are in alphabetical order, therefore it is possible to find the next or previous file using the INDEX / MATCH combination.

FILES find the next or previous file

The next file after “Denver.xlsx” is “New York.pdf“. The formula in Cell B3 is:


Retrieve values from each file with INDIRECT

The INDIRECT function can construct a cell reference using text strings.  Having retrieved the list of files in a folder, it would be possible to obtain values from those files.


The formula in Cell B3 is:


For INDIRECT to calculate correctly the file does need to be open, so this may be a significant flaw in this option.

Usage notes

When working with the FILES function there are a few things to be aware of:

  • The file path and file name is not case sensitive
  • Files are returned in alphabetical order
  • Folders and hidden files are not returned by the function
  • The workbook must be saved as a “.xlsm” file format

Further reading

There are variety of other Excel 4 functions available which still work in Excel. Check out this post to find out how to apply them and download the Excel 4 Macro functions reference guide.

If you decide to use a VBA method, check out this post.

Get our FREE VBA eBook of the 30 most useful Excel VBA macros.
Automate Excel so that you can save time and stop doing the jobs a trained monkey could do.

Email Address * First Name *

By entering your email address you agree to receive emails from Excel Off The Grid. We’ll respect your privacy and you can unsubscribe at any time.

Don’t forget:

If you’ve found this post useful, or if you have a better approach, then please leave a comment below.

Do you need help adapting this to your needs?

I’m guessing the examples in this post didn’t exactly meet your situation.  We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs.  By taking the time to understand the techniques and principles in this post (and elsewhere on this site) you should be able to adapt it to your needs.

But, if you’re still struggling you should:

  1. Read other blogs, or watch YouTube videos on the same topic.  You will benefit much more by discovering your own solutions.
  2. Ask the ‘Excel Ninja’ in your office.  It’s amazing what things other people know.
  3. Ask a question in a forum like Mr Excel, or the Microsoft Answers Community.  Remember, the people on these forums are generally giving their time for free.  So take care to craft your question, make sure it’s clear and concise.  List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
  4. Use Excel Rescue, who are my consultancy partner.   They help by providing solutions to smaller Excel problems.

What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid.  Check out the latest posts:

20 thoughts on “Excel function to list files in a folder without VBA

  1. Neill Sonnenberg says:

    Hi there, this is what I was looking for for many years. I spent an awfull amount of money on books looking for some info similar to this. I wasted all my money. This is what I am looking for. Thank you so much for this and all the examples. I’ll always have a look on your web site for more of these.

    Kind regards

    • Excel Off The Grid says:

      Hi Neill,

      It is certainly a useful feature, which I make use of from time to time.

      PowerQuery (Get & Transform) is also a good alternative, but it’s a shame that Microsoft hasn’t created another more intuitive way of achieving the same result.

      Hopefully there were some other useful tips in the Excel books you purchased.

  2. Syed says:

    Hi Neill
    Thanks for all the guidance…..very/very helpful…..One question though, Is there a way to add the modification date along with with the list of files? Again focus is without the help of VBA. If there is, it will help me a lot since I am managing more than 600 files in the folder and the modification date can save at least 15% of my time. Thanks.

    • Excel Off The Grid says:

      I’m not aware of a simple method. You could try a VBA User Defined Function:

      Function GetFileProperties(filePath As String)
      GetFileProperties = FileDateTime(filePath)
      End Function

      Or you could try PowerQuery as an option for the whole process.

  3. Vernon Largeq says:

    This is just what I need, it works well although my list does not refresh if an additional file is added to the folder.

    How would I be able to refresh the list?

    • Ron says:

      Yes, use a volatile function, for example =INT(COUNTA(LISTFILES)+RAND())

      This formula will return the number of entries in the directory matching your mask.

      And every time any recalculation anywhere in the workbook is done, the list will be updated. (So this will slow down recalculation, but it will work.)

  4. Jon Peltier says:

    What’s cool with the new Dynamic Arrays, is you can enter this into just one cell:


    and Excel will build a dynamic list of the files starting in that cell and extending down as far as needed.

  5. Zack R Harris says:

    *quote: Files are returned in alphabetical order

    This is not the case anymore! I’ve been using this formula successfully for years, but suddenly it is no longer returning the file list in order. It is driving me crazy! Please help.

  6. Alberto says:

    Excellent soluction, easy to list all files from excel.
    It work with folder path in my PC
    I would like to know how to do the formula using a Folderpath in onedrive

    • Excel Off The Grid says:

      Yes… OneDrive is a bit of a problem.

      Even when using the CELL function, it gives the URL, rather than a file path. At present, I don’t have a good simple solution for this. But I should look into it a bit more as it’s becoming an issue for more people.

  7. Ramlo says:

    This works fine when I enter the formula in a new excel file & save the xlsm file. But when I reopen, it gives a #NAME? Error and the filenames are gone. Tried refreshing the formula, changing the named range etc. but nothing works.

    I again tried saving a new excel(xlsm) and same story.

  8. Jose says:

    I’ve tried as you said and I don’t get the same results, unfortunately…
    I’ve created a folder C:\Teste and some .xlsx and .doc files inside it (1.xlsx; 2.xlsx,…).
    I’ve defined a name as you said (LstF).
    On file 1.xlsx, on Sheet1, on cell A1 I’ve copied the folder path (C:\Teste\*)
    On file 1.xlsx, on Sheet1, on cell A3 I’ve wrote the formula =IFERROR(INDEX(LstF;ROW()-2);””) and the result I get is the content of the cell A1 (C:\Teste\*).
    Am I doing something wrong?

Leave a Reply

Your email address will not be published. Required fields are marked *