The Scenario
Your field sales team covers 200 customer accounts scattered across three states. The territory manager has been asking for a map for two months. You have the customer addresses in column A of an Excel workbook. You need latitude and longitude in columns B and C so the data can be dropped into a mapping tool and territories can be drawn. A colleague mentioned GraphHopper has a geocoding API. You've read the documentation. It requires coordinates in, coordinates out — except your input is text addresses, not coordinates. That's the forward geocoding endpoint. Different parameters. Different response schema.
The bad version:
- Open Postman or curl, build a GraphHopper Geocode API request for the first address, extract the lat/lon from the response JSON, copy the values into row 2.
- Repeat 199 more times.
- Realize at row 47 that you've been writing the longitude into column B and the latitude into column C. Redo from row 47.
There is no version of this that takes less than a full afternoon doing it manually.
The Easy Way: One Prompt in SheetXAI
SheetXAI is an AI agent that lives inside your Excel workbook. It reads the addresses in column A, calls the GraphHopper Geocoding API for each row, and writes latitude into column B and longitude into column C — all 200 rows in a single pass.
Geocode every address in column A using GraphHopper and write the latitude into column B and longitude into column C — process all 200 rows
What You Get
- Column B fills with latitude values for each row.
- Column C fills with longitude values.
- Rows where GraphHopper returns no match (address too ambiguous) get a note in column D rather than a blank coordinate that would silently break your map.
- All 200 rows process in one call — no manual batching.
What If the Data Is Not Quite Ready
Addresses are split across multiple columns — street in A, city in B, state in C
Concatenate columns A, B, and C into a full address for each row, geocode each combined address using GraphHopper, and write latitude into column D and longitude into column E for all rows
Some rows have just a city name or a zip code, not a full street address
For rows in column A where the address appears to be a zip code or city name only, geocode to city-level coordinates and mark "CITY LEVEL" in column D — for rows with full street addresses, geocode normally and write lat/lon into columns B and C
Addresses are a mix of US and international — geocoding confidence varies
Geocode each address in column A using GraphHopper, write latitude into column B and longitude into column C, and write GraphHopper's confidence score for each result into column D so I can review low-confidence geocodes
Normalize, geocode, and flag missing territory assignments in one prompt
Standardize the address format in column A (remove apartment numbers and suite designations), geocode each normalized address using GraphHopper, write lat into column B and lon into column C, then check column D for territory assignment and write "UNASSIGNED" in column E for any geocoded row where column D is blank
Territory assignment gaps and geocoding are one job, not two.
Try It
Get the 7-day free trial of SheetXAI and open the Excel workbook with your customer address list — ask it to geocode all 200 rows and write lat/lon in a single pass, then hand the output straight to your mapping tool. Also useful: Build a Driving Distance and Time Matrix From an Excel workbook and the GraphHopper overview.
