6/9/19

Tách địa chỉ thu thập thành các cột tỉnh, quận huyện, tên đường..

Câu hỏi của 1 bạn đăng trên group GPE. Em muốn tách dữ liệu địa chỉ chia thành từng cột theo đường, phường, quận, tp. Nhờ anh chị chỉ giúp ... thumbnail 1 summary
Câu hỏi của 1 bạn đăng trên group GPE.
Em muốn tách dữ liệu địa chỉ chia thành từng cột theo đường, phường, quận, tp. Nhờ anh chị chỉ giúp em với ạ. trong đó nếu được, cột đường muốn lấy thông tin từ phần đường/ phố trở về trước ( nghĩa là bao gồm cả tầng, số nhà ... )
Dữ liệu không chuẩn, nhưng sẽ có nhiều trường hợp dùng cho phân tích dữ liệu thu thập


Với dữ liệu này hiện mình chỉ có thể tách được 90% dữ liệu bằng công thức và VBA, còn bạn thì sao?


Cách làm
Bạn Nhấn Alt+F11, trong cửa sổ VBA, tạo 1 module mới, copy và dán code sau vào
Function InStrRev(ByVal StringCheck As String, ByVal StringMatch As String, Optional ByVal Start As Integer = -1) As Integer
'Tim ky tu tu ben phai qua
InStrRev = VBA.InStrRev(StringCheck, StringMatch, Start)
End Function

Function Tachchuoi(diachi As String, tu As String, kieu As Integer)
'tach chuoi theo dau ","
'Kieu = 0, tach tu ben phai qua den ky tu tim thay
'kieu <>0, tach tu ben trai qua den ky tu tim thay
' "tu" có the la 1 ky tu, co the la 1 cum tu. Lay lam moc de tach chuoi
Dim phancach As Byte
phancach = InStrRev(diachi, tu, -1)
If phancach = 0 Then
Tachchuoi = diachi
Exit Function
End If
If kieu = 0 Then
Tachchuoi = Trim(Right(diachi, Len(diachi) - phancach))
Else
Tachchuoi = Trim(Left(diachi, phancach - 1))
End If
End Function

Function Chuanhoa(diachi As String)
'Dung chuyen cac dau "-" thanh dau ","

diachi = WorksheetFunction.Substitute(diachi, "-", ",")
diachi = WorksheetFunction.Substitute(diachi, " ,", ", ")
diachi = WorksheetFunction.Substitute(diachi, ",", ", ")
diachi = WorksheetFunction.Substitute(diachi, " ", " ")
Chuanhoa = WorksheetFunction.Substitute(diachi, " ", " ")

End Function

Function sokytu(diachi As String, kytucandem As String) As Integer
'Dung dem so dau phay trong dia chi
sokytu = Len(diachi) - Len(WorksheetFunction.Substitute(diachi, kytucandem, ""))
End Function
Function Quocgia(diachi As String)
' Tach chu viet Nam ra
diachi = Chuanhoa(diachi)
If Tachchuoi(diachi, ",", 0) = "Vi" & ChrW(7879) & "t Nam" Then
Quocgia = Tachchuoi(diachi, ",", 0)
Else
Quocgia = ""
End If
End Function

Function Thanhpho(diachi As String)
'tach thanh pho
diachi = Chuanhoa(diachi)
If Quocgia(diachi) <> "" Then
diachi = Tachchuoi(diachi, ",", 1)
End If
Thanhpho = Tachchuoi(diachi, ",", 0)
End Function
Function quan(diachi As String)
'Tach quan
diachi = Chuanhoa(diachi)
diachi = Tachchuoi(diachi, ", " & Thanhpho(diachi), 1)
If sokytu(diachi, ",") > 0 Then
quan = Tachchuoi(diachi, ",", 0)
Else
quan = ""
End If
End Function
Function phuong(diachi As String)
'Tach phuong
diachi = Chuanhoa(diachi)
diachi = Tachchuoi(diachi, ", " & quan(diachi), 1)
If sokytu(diachi, ",") > 0 Then
phuong = Tachchuoi(diachi, ",", 0)
Else
phuong = ""
End If
End Function
Function duong(diachi As String)
'Tach phuong
diachi = Chuanhoa(diachi)
duong = Tachchuoi(diachi, ", " & phuong(diachi), 1)

End Function

Quay lại cửa sổ Excel và sử dụng các hàm:

- ở ô Đường phố, gõ
 =duong(B2)

ô Phường xã gõ

=Phuong(b2)

Ô quận Huyện gõ:
=quan(B2)
Ô Thành Phố
Gõ:
=thanhpho(B2)

Ô Quốc gia gõ:
= quocgia(B2)

Kéo công thức và tận hưởng

Xem file mẫu

Tải file







===================================================
Để trao đổi và hỏi đáp thêm về chủ đề này, vui lòng truy cập vào diễn đàn các bạn nhé https://thuthuataccess.com/forum/forum-21.html

Không có nhận xét nào

Đăng nhận xét