Back to Interzoid in Google Sheets
SheetXAI logo
Interzoid logo
Interzoid · Google Sheets Guide

Parse Free-Form Addresses Into Structured Columns in a Google Sheet

2026-05-15
5 min read

The Scenario

You're a data engineer. A batch of 800 rows just arrived from a web form — the address field is free-form text, everything from "123 Main St, Springfield, IL 62701" to "123 main street springfield illinois" to "123 Main, Springfield." The downstream PostgreSQL table expects four clean columns: street, city, state, ZIP. You need them parsed before the load job runs tonight.

The form has been collecting addresses this way for six months. Nobody ever got around to adding address autocomplete to the front end.

The bad version:

  • Write a regex to split on commas — which works for 600 rows and fails on the 200 that use a different delimiter or no delimiter at all.
  • Paste the whole column into a spreadsheet formula using SPLIT and TEXTSPLIT — which falls apart the moment an address has a comma in the street name.
  • Open a parsing library in Python, spend two hours configuring it, run it on the CSV, discover 40 edge cases, patch them, run it again.

The load job is scheduled for 11 PM. It's 4 in the afternoon.

The Easy Way: One Prompt in SheetXAI

SheetXAI reads your Google Sheet and calls Interzoid's address parsing API for every row — splitting the free-form string into structured columns without you writing a line of code.

Parse each address in column A (800 rows) using Interzoid and write the street, city, state, and ZIP code into columns B, C, D, and E respectively.

What You Get

  • Column B: parsed street address.
  • Column C: parsed city.
  • Column D: parsed state (normalized to standard abbreviation).
  • Column E: parsed ZIP code.
  • Rows where Interzoid could not parse a valid state or ZIP flagged in column F as 'PARSE ERROR' so you know exactly which rows need manual review before the load.

What If the Data Is Not Quite Ready

Some rows have apartment numbers inline ("123 Main St Apt 4B, Springfield, IL")

Parse each address in column A using Interzoid — write the primary street (without unit) to column B, the unit number to column C, city to column D, state to column E, and ZIP to column F. Flag rows with no unit as blank in column C.

The addresses are a mix of US and international — ZIP format varies

Parse each address in column A using Interzoid. For US addresses write state and ZIP to columns D and E. For non-US addresses write country to column D and postal code to column E. Flag any row where Interzoid could not parse a valid postal format in column F.

Flag any rows where Interzoid could not parse a valid state or ZIP

Flag any rows where Interzoid could not parse a valid state or ZIP by writing 'PARSE ERROR' in column F.

Full parse + validation + load prep in one shot

Parse every address in column A using Interzoid, writing street to column B, city to column C, state to column D, ZIP to column E. Flag unparseable rows as 'PARSE ERROR' in column F. For parseable rows, write 'READY' in column F. Then create a new worksheet called 'LoadReady' containing only the rows marked READY, formatted with headers Street, City, State, ZIP for the load job.

One prompt handles the parse, the flagging, and the output sheet the load job expects.

Try It

Get the 7-day free trial of SheetXAI and open the Google Sheet with your raw address column — ask SheetXAI to parse column A into structured columns before tonight's load. Then see the spoke on deduplicating addresses by match key, or the full Interzoid integration overview.

Stop memorizing formulas.
Tell your spreadsheet what to do.

Join 4,000+ professionals saving hours every week with SheetXAI.

Learn more