Membagi alamat menjadi sel yang berbeda

-1

Saya memiliki kolom alamat dalam format ini:

120 Lemon Street Columbus OH 92738 (Basketball Courts)

Dan saya perlu membaginya menjadi: alamat jalan (120 Lemon Street), kota (Columbus), nyatakan (OH), Kode Pos (92738) dan deskripsi ((Basketball Courts))

Apakah ada cara saya bisa melakukan ini? Semua ini dalam kondisi yang sama, jadi itu bukan masalah. Mereka berada di kota yang berbeda dan memiliki kode pos yang berbeda.

Jika Anda hanya tahu cara melakukannya, tetap beri tahu saya. Bantuan apa pun dihargai, terima kasih!

user1282637
sumber
1
Yah ini agak sulit dilakukan kecuali Anda memiliki beberapa hal yang ditetapkan .. seperti apakah nama jalan Anda selalu dua kata dengan satu peralihan ruang (Lemon Street)? Apakah kota Anda selalu satu kata? Pada dasarnya Anda perlu menemukan pola atau memasukkan pembatas ke entri Anda yang dapat Anda pisahkan.
Eric F
Apa yang sudah Anda coba? Apakah VBA baik-baik saja?
Mr. Mascaro
@ EricF Mereka bukan jumlah kata yang sama untuk jalan atau kota yang menjadi alasan saya mengalami kesulitan. Satu hal yang bisa saya pikirkan adalah memeriksa setiap kali ada kata-kata seperti "Avenue, Street, Lane" dll dan memotong semuanya setelahnya. Tetapi saya tidak yakin apakah itu metode yang baik atau tidak
user1282637
Bahkan dengan VBA Anda perlu pola untuk mematikan atau tabel yang Anda rujuk.
Eric F
2
Anda banyak bertanya di sini. Memisahkan teks yang tidak diawali seperti ini akan muncul untuk merumuskan aturan berdasarkan keteraturan dalam kumpulan data spesifik Anda. Dalam pengalaman saya, ini banyak trial and error - mencoba aturan umum, menemukan pengecualian untuk aturan itu, dan kemudian memasukkan level lain ke aturan untuk menangkap pengecualian, dan seterusnya. Tanpa mempersempit masalahnya, akan sulit bagi siapa pun tanpa akses ke data spesifik Anda untuk membantu.
Excellll

Jawaban:

2

User1282637, saya telah menyiapkan contoh untuk menunjukkan kepada Anda di bawah ini. Saya hanya menjadikannya sebagai titik awal sehingga Anda dapat menyelesaikan dengan jawaban lengkap Anda sendiri.

Pertama, saya mengatur dua daftar. Salah satunya adalah singkatan negara dan yang lainnya semua sufex jalan yang diterima yang saya temukan di sini:

http://pe.usps.com/text/pub28/28apc_002.htm

enter image description here

Saya menggunakan rumus yang saya daftarkan hanya untuk mengkonversi daftar untuk memulai dengan huruf kapital dan sisanya menjadi huruf kecil, seperti bagaimana Anda menulisnya.

Selanjutnya hanya mencari apa yang berlaku ..

enter image description here

Bagian ini dapat dilakukan dengan banyak cara tetapi saya memutuskan cara ini sebagai contoh. Itu hanya akan daftar nomor di baris yang sesuai yang menemukan kecocokan untuk akhiran yang digunakan.

Saya memisahkan bagian (Lapangan Basket) dengan menggunakan tanda kurung:

enter image description here

Saya menampilkan apa yang tersisa karena dalam kasus Anda "Pengadilan" dari "Lapangan Basket" juga merupakan akhiran jalan:

enter image description here

Selanjutnya saya perlu mencari berapa lama string itu adalah akhiran jalan jadi saya menggunakan yang berikut:

enter image description here

dan ini...

enter image description here

dan terakhir ini memungkinkan saya untuk menampilkan hanya jalan:

enter image description here

Sekarang saya belum melakukan kota dan negara tetapi mengikuti ide ini, Anda dapat mencapai ini. Juga jika Anda ingin opsi yang lebih bersih maka pasti akan mempelajari VBA lebih lanjut. Saya berharap ini setidaknya mengajarkan Anda beberapa ide tentang bagaimana melakukannya.

Eric F
sumber
0

User1282637 bertanya apakah ada cara untuk menyelesaikan tugas ini dan meminta bantuan dalam melakukan itu. Masalahnya bukan mekanika Excel sebanyak bagaimana menangani ambiguitas dalam data. Parsing Kode ZIP dan deskripsi secara langsung (kecuali Anda memiliki campuran 5 digit dan 9 digit ZIP). Masalah yang sulit adalah memisahkan jalan dari kota, jadi saya akan fokus pada hal itu. Ini tidak dimaksudkan sebagai langkah-demi-langkah bagaimana melakukannya dengan rumus Excel. Itu hanya berbagi beberapa wawasan tentang masalah dan menjelaskan pendekatan untuk mencapai hasil untuk bagian yang sulit.

Masalahnya adalah bahwa tidak ada pembatas di antara bidang yang berbeda. Itu bukan masalah untuk mengupas deskripsi atau ZIP karena mudah diidentifikasi. Masalahnya menentukan di mana Street berakhir dan City dimulai. Pertimbangkan variasi-variasi ini di bagian Jalan (jauh dari daftar lengkap):

120 Lemon Street
120 Lemon Drop Street
120 Lemon Street NW
120 East Lemon Street
120 Lemon Street Apt 3

Jumlah "kata" di jalan dapat bervariasi dari serendah 1 atau 2, hingga 7 atau 8, sehingga tidak berguna untuk penguraian. "Jenis" jalan juga tidak terlalu berguna. Ada pada urutan 50-100 kata yang digunakan hanya untuk "tipe" jalan (jalan, jalan, bulevar, jalan, jalan tol, jalur, lapangan, lingkaran, teras, dll.). Gabungkan bahwa dengan penggunaan singkatan untuk jenis jalan, baik yang benar maupun yang salah, dan daftarnya ada dalam ratusan. Plus, penunjukan ini tidak selalu kata terakhir di bidang jalan. Jalan adalah bagian tersulit untuk diidentifikasi sehingga pendekatan logis adalah untuk mengidentifikasi sisanya dan sisanya adalah jalan.

Kota ini dapat terdiri dari beberapa kata. Gedung Pengadilan Washington, OH adalah tiga kata. Kemudian pertimbangkan situasi seperti St Marys, OH. Apakah "St" bagian dari nama kota atau sebutan tipe jalan; bidang apa yang dimilikinya? Atau South Euclid, OH - apakah "Selatan" bagian dari nama kota atau arah yang merupakan bagian dari alamat jalan? City memiliki masalah tetapi ada cara untuk menghadapinya.

Bahkan menggunakan kode ZIP untuk mengidentifikasi kota memiliki masalah. Tidak selalu ada kecocokan 1: 1 antara nama kota dan ZIP.

Cara paling praktis untuk menyerang masalah adalah dengan menggunakan "kamus": daftar kota, dan direktori Kode Pos. Ini adalah bagian alamat yang paling jelas. Ini dapat ditemukan online atau dari Layanan Pos. Untuk melakukan perbandingan, Anda mungkin perlu membersihkan data atau daftar Anda. Mereka akan membutuhkan gaya huruf besar yang sama dan ruang ekstra di data Anda akan mencegah kecocokan yang tepat.

Jika data atau daftar Anda menggunakan singkatan, Anda harus menghadapinya. Entah menerjemahkan yang tidak disatukan ke singkatan standar atau melakukan kecocokan sekunder terhadap kamus singkatan (juga tersedia online atau dari Layanan Pos), ketika perbedaan-perbedaan itu ditemukan.

ZIP dapat dengan mudah diurai, dan itu adalah tempat yang baik untuk memulai. Lakukan pencarian Kode ZIP terhadap direktori Kode ZIP. Jika hasilnya persis cocok dengan serangkaian kata yang tepat sebelum ZIP, yang mengidentifikasi bagian rekaman mana yang merupakan bidang kota.

Jika tidak ada kecocokan yang pasti atau tidak ambigu, pindah ke perbandingan nama kota. Ulangi daftar nama kota. Untuk setiap nama, tentukan jumlah kata yang dikandungnya dan bandingkan dengan jumlah kata yang tepat sebelum ZIP.

Jika Anda mendapatkan kecocokan melalui proses mana pun, semua yang tersisa di sebelah kiri kota adalah alamat jalan.

Aplikasi jenis ini jauh lebih mudah dilakukan dengan aplikasi database daripada dengan spreadsheet. Bagaimanapun, Anda dapat melihat bahwa mencoba melakukan ini dengan cara otomatis bukanlah tugas yang mudah. Anda tidak dapat melakukannya dengan beberapa rumus spreadsheet.

Tidak peduli seberapa keras pemrograman Anda, Anda mungkin masih memiliki catatan yang harus diurai dengan tangan, dan mengurai kesalahan yang perlu Anda perbaiki dengan tangan. Anda tidak menunjukkan berapa banyak catatan yang Anda miliki. Mungkin kurang bekerja untuk melakukannya secara manual.

Jika angkanya besar dan saya harus melakukannya, saya akan menyisihkan daftarnya. Cocokkan catatan yang mudah, seperti pertandingan ZIP yang jelas. Lalu biarkan jumlah data mengatur seberapa jauh Anda memprogram pencocokan otomatis.

Untuk catatan yang tersisa, dengan asumsi Anda sudah melepas ZIP dan deskripsi, berikut adalah cara untuk mempercepat proses manual. Lihatlah catatan dan identifikasi secara visual jumlah "kata" di kota, yang merupakan tugas mental yang cepat. Masukkan itu dalam sel yang ditentukan dan gunakan rumus untuk memisahkan jalan dari kota berdasarkan jumlah jeda ruang (pisahkan pada ruang Nth di mana N = total ruang + 1 - jumlah kata dalam nama kota).

fixer1234
sumber
-1

Coba ini. Pendekatan sederhana ini akan bekerja dengan sangat baik jika Anda dapat hidup dengan memiliki Alamat dan Kota di sel yang sama. Saya memiliki rumus untuk mengekstrak kota jika hanya satu kata, tetapi menjadi jauh lebih rumit jika dengan kota banyak kata (mis., New York).

Rumus ... Alamat & amp; Kota: = KIRI (A2, FIND ("OH", A2) -1) Status: = MID (A2, FIND ("OH", A2), 2) - Anda menyebutkan semuanya OH, jadi saya membuatnya sederhana Zip: = MID (A2, FIND ("OH", A2) +3,5) Deskripsi: = TRIM (MID (A2, FIND ("OH", A2) +8,30))

https://onedrive.live.com/redir?page=view&resid=D91C36B074F4D0F6!3224&authkey=!AO_MbW7Qxv4yWDo

enter image description here

Petr Fedorov
sumber
1
Anda juga harus memposting rumus sebenarnya di sini. Saya tahu secara pribadi saya tidak suka mengunjungi tautan eksternal yang diposkan orang.
Eric F
-2

Kode:

Sub SplitAddress()
    Dim Addr As String
    Dim l As Integer
    Dim Desc As String
    Dim Zip As String
    Dim State As String
    Dim City As String

    Addr = Selection

    l = InStrRev(Addr, "(")
    Desc = Right(Addr, Len(Addr) - l + 1)

    Addr = Left(Addr, InStrRev(Addr, " ", l) - 1)

    l = InStrRev(Addr, " ")
    Zip = Right(Addr, Len(Addr) - l)

    Addr = Left(Addr, InStrRev(Addr, " ", l) - 1)

    l = InStrRev(Addr, " ")
    State = Right(Addr, Len(Addr) - l)

    Addr = Left(Addr, InStrRev(Addr, " ", l) - 1)

    l = InStrRev(Addr, " ")
    City = Right(Addr, Len(Addr) - l)

    Addr = Left(Addr, InStrRev(Addr, " ", l) - 1)

    Selection.Offset(0, 1) = Addr
    Selection.Offset(0, 2) = City
    Selection.Offset(0, 3) = State
    Selection.Range("B11").Offset(0, 4) = Zip
    Selection.Range("B11").Offset(0, 5) = Desc
End Sub

Penjelasan: tekan Alt+F11 dan rekatkan kode di atas ke dalam janda yang muncul. Kemudian pilih sel yang berisi alamat dan kembali ke jendela tempat Anda menempelkan kode dan tekan F5.

Jika berhasil, kami dapat membuatnya lebih spesifik untuk situasi spesifik Anda.

Mr. Mascaro
sumber
@Raystafarian, saya pikir Anda salah membaca pertanyaan. OP mengatakan bahwa data selalu dalam format yang disediakan. Format yang dimaksud dibatasi kosong.
Mr. Mascaro
1
Bagaimana dengan kota dua kata? Kota tiga kata?
Excellll
@Excellll, Tidak ada solusi untuk data yang tidak terkirim akan sempurna, tetapi ini akan lebih dekat dari jawaban yang Anda posting.
Mr. Mascaro
1
baik itu dapat dibatasi atau referensi tabel seperti jawaban saya. Saya kira itu hanya tergantung pada bagaimana OP ingin menanganinya. Saya merespons dengan menggunakan formula karena dia sepertinya tidak mengerti apa itu VBA, belum sendirian menulis di dalamnya.
Eric F
2
@ jbarker2160 Saya tidak memposting jawaban.
Excellll