Excel isn't known for being pretty, but the overlooked IMAGE function changes that. I'd used the IMAGE function before for simple visuals, but I wanted to see how far it could go. So I put it to the test by building a couple of interactive tools, and by the end, my spreadsheets felt more like apps than worksheets.
IMAGE is more powerful than it looks
One argument does the heavy lifting
The setup turned out to be much easier than I expected. At its core, the IMAGE function lets Excel display an image inside a cell using a direct image URL. It includes five arguments:
=IMAGE(source, [alt_text], [sizing], [height], [width])However, for these experiments, I only needed the first argument. I didn't need the optional alt_text argument because the focus was on building a visual interface. And for the sizing arguments, since Excel automatically scales the image to fit the cell, this default behavior worked well for the tools I wanted to build.
The main limitation is that IMAGE depends on external URLs. If an image is moved, deleted, or locked behind a sign-in page, Excel won't be able to retrieve it. Since each image is retrieved from a web address, using lots of high-resolution images may make larger workbooks slower to load. For the small, focused tools I built, however, any performance impact was negligible.
The other thing is that IMAGE is only available in newer versions of Excel, including Microsoft 365, Excel 2024, and the mobile app. Since I was using Excel for Microsoft 365 on my Windows PC, I knew it could handle everything I wanted to test.
I turned a boring drop-down into a visual picker
My first test made Excel feel interactive
I started with a simple question: could I replace a standard, text-only product list with something more visual? Rather than reading through a list of items and imagining what each one looks like, I wanted the spreadsheet to display the image automatically.
I began by creating an Excel table named "Products," with columns for the product name, image URL, and image. I uploaded my product photos to Dropbox and pasted the links into the Image URL column, expecting =IMAGE([@[Image URL]]) to display them immediately. Instead, the formula returned a #VALUE! error.
It turned out IMAGE needs a direct link to the image itself, not a Dropbox preview page. Replacing dl=0 with raw=1 in each URL converted the links into direct image sources that Excel could retrieve. Once I'd made that change, the formula instantly transformed the table into a visual product catalog.
I was now ready to build a separate table, named "Picker," with a data validation drop-down list that displayed the matching image when I selected an item. To do this, I created a named range for the product column in the Products table so the drop-down list would expand as I added new items. Then, in my Picker table, I entered:
=IMAGE(XLOOKUP([@Product],Products[Product],Products[Image URL]))This worked when a product was selected, but the empty dashboard initially returned an #N/A error. To handle that empty state, I wrapped the formula inside IFERROR and added a custom "Select product" message to appear in the drop-down cell if the selection cell was empty:
=IFERROR(IMAGE(XLOOKUP([@Product],Products[Product],Products[Image URL])),"Select product")The final step was making it feel less like a spreadsheet. I added a large "Product Preview" title, hid the gridlines and headings, added buffer space around the layout, and resized the cells to create a cleaner interface. These small changes completely changed how the worksheet felt. Instead of looking like a spreadsheet with pictures, it felt more like a lightweight app.
Now that I know what the IMAGE function can do, I can see myself using this approach anywhere an image communicates more than a text label—from product catalogs and inventory systems to equipment trackers and internal dashboards.
I built a QR code generator inside Excel
A simple API made it possible
For my second tool, I wanted to see whether Excel could generate QR codes that updated automatically alongside my data. Creating a one-off QR code is easy enough, but keeping it synchronized with changing information usually means creating a new image each time. I wanted something that behaved like a live part of the spreadsheet.
To make this work, I combined the IMAGE and ENCODEURL functions with a free QR code generator API. The service creates a QR code from whatever information is added to the data parameter in its URL, while ENCODEURL handles the formatting behind the scenes by converting spaces and special characters into a format the service can read correctly.
With the text I wanted to encode stored in cell A2, the formula looked like this:
=IMAGE("https://api.qrserver.com/v1/create-qr-code/?size=150x150&data="&ENCODEURL(A2))
The part I found most interesting was how naturally the QR code fit into the worksheet—it became part of the spreadsheet itself, changing instantly whenever the source cell changed. I was also surprised by how little the QR code cared about the source data. It doesn't have to contain a web address—it can hold almost any text. A phone number can generate a contact QR code, a URL can provide a quick link to a website or document, and even a search term can serve as a shortcut for finding information.
The main consideration was deciding what information to send through the external API. Because the QR code is generated online, Excel sends the cell contents to that service as part of the request. For things like inventory labels, Wi-Fi sharing sheets, and document links, this approach is practical, but sensitive data would require more thought.
After increasing the row height and column width, the QR code became much easier to scan. But where this tool became truly valuable was in being able to take that automatically generated QR code and use it elsewhere. By copying the generated image, pasting it as a value, and using Excel's Place over Cells option, I could separate the QR code from the worksheet layout, then save it as a picture or paste it into another worksheet or program. This meant Excel was not just creating QR codes inside a spreadsheet—it was giving me a quick way to generate reusable ones whenever I needed them.
Less is more
The biggest takeaway was that I didn't need VBA, add-ins, or complicated tools. Everything came from one underused function working alongside features already built into Excel. More than anything, it reminded me that getting more out of Excel isn't always about mastering its most advanced features. Sometimes it's the functions you've overlooked that have the most to offer. I found the same thing when I discovered how combining FILTER, UNIQUE, and SORTBY in a single cell could transform the way I organized data—proving that a few simple features can go much further than you'd expect.