住所を入力するときは1つのセルで書くほうが楽なのですが、集計するときはセルが分割されていると便利。
ということで、困っている人がいたのでGoogle Apps Scriptで分離できるようにしました。
Google Apps Script
A列に都道府県から始まる住所があり、それを下記のように分割して表示します。
B列:都道府県
C列:市または区
D列:それ以降
という感じです。
住所の並びはほぼ市区町村ですが、東京都は都道府県の後に区になるので特別処理が必要です。
function splitAddress(address) { if (!address || address.trim() === "") { return ["", "", ""]; } var prefectures = ["北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県", "茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県", "富山県", "石川県", "福井県", "山梨県", "長野県", "岐阜県", "静岡県", "愛知県", "三重県", "滋賀県", "京都府", "大阪府", "兵庫県", "奈良県", "和歌山県", "鳥取県", "島根県", "岡山県", "広島県", "山口県", "徳島県", "香川県", "愛媛県", "高知県", "福岡県", "佐賀県", "長崎県", "熊本県", "大分県", "宮崎県", "鹿児島県", "沖縄県"]; var prefecture = prefectures.find(pref => address.startsWith(pref)); if (!prefecture) { return ["", "", address]; // 都道府県が見つからない場合 } var remainingAddress = address.split(prefecture)[1].trim(); var cityRegex; // 東京都の場合の特別な処理 if (prefecture === "東京都") { cityRegex = /区/; } else { cityRegex = /市|区|町|村/; } var cityIndex = remainingAddress.search(cityRegex); if (cityIndex >= 0) { var city = remainingAddress.substring(0, cityIndex + 1); // 市区町村の名前を取得 var restAddress = remainingAddress.substring(cityIndex + 1).trim(); // それ以降の住所 return [prefecture, city, restAddress]; } else { return [prefecture, "", remainingAddress]; } } function splitAddressesInSheet() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); var addresses = sheet.getRange(1, 1, lastRow, 1).getValues(); for (var i = 0; i < addresses.length; i++) { var address = addresses[i][0]; var split = splitAddress(address); sheet.getRange(i + 1, 2).setValue(split[0]); // B列に都道府県 sheet.getRange(i + 1, 3).setValue(split[1]); // C列に市区町村 sheet.getRange(i + 1, 4).setValue(split[2]); // D列にそれ以降の住所 } }