Tách địa chỉ

Liên hệ QC

quangnbd

Thành viên mới
Tham gia
8/5/09
Bài viết
8
Được thích
1
Điểm
0
Chào các anh,

Nhờ các anh tách dùm em danh sách khách hàng của em tại cột địa chỉ như sau: Cứ sau dấu (,) thì tách ra dùm em riêng 1 cột, các anh chị có thể xem file đính kèm.
Em đang cần gấp, nhờ các anh giúp dùm em.

Thanks all
 

File đính kèm

  • KH tach dia chi.xls
    22.5 KB · Đọc: 31
Bạn vào Data ->Text to column ->Delimited with ->next ->Chọn other(,) ->Next ->Finish
 
Chào các anh,

Nhờ các anh tách dùm em danh sách khách hàng của em tại cột địa chỉ như sau: Cứ sau dấu (,) thì tách ra dùm em riêng 1 cột, các anh chị có thể xem file đính kèm.
Em đang cần gấp, nhờ các anh giúp dùm em.

Thanks all

bạn dùng thử hàm này xem sao nhé
Code:
PHP:
'   Src: chuoi text can xu ly
'   delimeted: dau phan cach
'   pos: vi tri muon lay
' VD: substring("231/1 Kp1, P, Tan Chanh Hiep",",",1) => "231/1 Kp1"
'     substring("231/1 Kp1, P, Tan Chanh Hiep",",",2) => "P"
Public Function substring(Src, delimeted, pos)
Dim arr
    If pos <= 0 Then
        substring = Src
        Exit Function
    End If
    
    arr = Split(Src, delimeted)

    If IsArray(arr) Then
        If pos > UBound(arr) + 1 Then
            substring = ""
            Exit Function
        End If
        substring = Trim(arr(pos - 1))
    Else
        substring = ""
    End If
End Function
 
Thêm một cách dùng công thức cho bạn
 

File đính kèm

  • KH tach dia chi.xls
    40 KB · Đọc: 33
bạn dùng thử hàm này xem sao nhé
Code:
PHP:
'   Src: chuoi text can xu ly
'   delimeted: dau phan cach
'   pos: vi tri muon lay
' VD: substring("231/1 Kp1, P, Tan Chanh Hiep",",",1) => "231/1 Kp1"
'     substring("231/1 Kp1, P, Tan Chanh Hiep",",",2) => "P"
Public Function substring(Src, delimeted, pos)
Dim arr
    If pos <= 0 Then
        substring = Src
        Exit Function
    End If
    
    arr = Split(Src, delimeted)

    If IsArray(arr) Then
        If pos > UBound(arr) + 1 Then
            substring = ""
            Exit Function
        End If
        substring = Trim(arr(pos - 1))
    Else
        substring = ""
    End If
End Function
Vầy đủ rồi bạn à:
PHP:
Function SubString(Text As String, delimeted As String, Pos As Long) As String
  Dim Arr
  On Error Resume Next
  Arr = Split(Text, delimeted)
  SubString = Trim(Arr(Pos - 1))
End Function
Chú ý: Khai báo biến rõ ràng, đúng kiểu nhé:
- Pos as Long tức là ta gán kiểu Long cho biến Pos
- Ghi Pos không không thế hóa ra nó thuộc Variant à
- On Error Resume Next ở trên đã giải quyết cả đóng cái IF của bạn rồi
 
Lần chỉnh sửa cuối:
Vầy đủ rồi bạn à:
PHP:
Function SubString(Text As String, delimeted As String, Pos As Long) As String
  Dim Arr
  On Error Resume Next
  Arr = Split(Text, delimeted)
  SubString = Trim(Arr(Pos - 1))
End Function
Chú ý: Khai báo biến rõ ràng, đúng kiểu nhé:
- Pos as Long tức là ta gán kiểu Long cho biến Pos
- Ghi Pos không không thế hóa ra nó thuộc Variant à
- On Error Resume Next ở trên đã giải quyết cả đóng cái IF của bạn rồi
Mình là dân lập trình, nhất là về VB và VBA, nên những jì bạn nói mình đều hiểu cả, nhưng tại sao mình không khai báo tường minh
thứ 1: ve khai báo biến, nếu mọi thứ đều cứng nhắc rõ ràng như bạn nói thì những hàm VBA nó sẽ bị hạn chế.
thứ 2: không nên lạm dụng "On Error Resume Next", nếu bạn chưa hiểu về bẫy lỗi. Tại sao tôi fải dùng điều kiện để xử lý, vì nó có mục đích của nó hết.
VD: SubString("a, b, c",",",-1) => nếu là hàm tôi viết thì nó trả về chuỗi cũ, ngược lại hàm bạn viết chẳn trả về gì cả
Hay: SubString("a, b, c",",",4) => nếu là hàm tôi viết thì nó trả về chuỗi rỗng, ngược lại hàm bạn viết chẳn trả về gì cả
từ đó bạn thấy ý nghĩa 2 hàm viết nó sẽ khát nhau.

thânn chào
 
Mình là dân lập trình, nhất là về VB và VBA, nên những jì bạn nói mình đều hiểu cả, nhưng tại sao mình không khai báo tường minh
thứ 1: ve khai báo biến, nếu mọi thứ đều cứng nhắc rõ ràng như bạn nói thì những hàm VBA nó sẽ bị hạn chế.
Hạn chế thế nào hả bạn? Trừ phi biến ấy dùng nhiều kiểu (có thể là text nhưng có thể là number)
thứ 2: không nên lạm dụng "On Error Resume Next", nếu bạn chưa hiểu về bẫy lỗi. Tại sao tôi fải dùng điều kiện để xử lý, vì nó có mục đích của nó hết.
Cái này hoàn toàn đồng ý! Và tôi chỉ dùng nó khi nào tôi hiểu rất rõ về những lỗi mà code có thể gặp phải
VD: SubString("a, b, c",",",-1) => nếu là hàm tôi viết thì nó trả về chuỗi cũ, ngược lại hàm bạn viết chẳn trả về gì cả
Ah... cái này thì tùy theo yêu cầu của người dùng chứ bạn! Đâu có khó khăn gì để cho kết quả như vậy
Hay: SubString("a, b, c",",",4) => nếu là hàm tôi viết thì nó trả về chuỗi rỗng, ngược lại hàm bạn viết chẳn trả về gì cả
thânn chào
He.. he... cái này thì bạn xem lại nha! Code tôi cũng trả về chuỗi rỗng đấy! Lý do vì tôi khai báo hàm kiểu biến String ---> Bước khởi đầu, chưa có giá trị nào thì đương nhiên nó rỗng rồi còn gì
-------------------------
Nói chung là trao đổi kinh nghiệm! Tôi không phải dân lập trình chuyên nghiệp nên cũng rất mong học hỏi được nhiều thứ từ những người chuyên nghiệp như bạn!
 
Vầy đủ rồi bạn à:
PHP:
Function SubString(Text As String, delimeted As String, Pos As Long) As String
  Dim Arr
  On Error Resume Next
  Arr = Split(Text, delimeted)
  SubString = Trim(Arr(Pos - 1))
End Function
Chú ý: Khai báo biến rõ ràng, đúng kiểu nhé:
- Pos as Long tức là ta gán kiểu Long cho biến Pos
- Ghi Pos không không thế hóa ra nó thuộc Variant à
- On Error Resume Next ở trên đã giải quyết cả đóng cái IF của bạn rồi

Tôi debug cho bạn thấy nhé. Giả sử tôi có 1 phép gán s = substring("a,b,c",",",4), khi thực hiện hàm của bạn tới dòng lệnh SubString = Trim(Arr(Pos - 1)) => sẽ phát sinh lỗi, và theo bẫy lỗi On Error Resume Next, nó sẽ bỏ qua và thực hiện lệnh tiếp theo, vậy theo bạn lúc đó nó thực hiện lệnh nào? xin thưa, lệnh tiếp theo là thoát khỏi hàm và không có giá trị trả về.
 
Tôi debug cho bạn thấy nhé. Giả sử tôi có 1 phép gán s = substring("a,b,c",",",4), khi thực hiện hàm của bạn tới dòng lệnh SubString = Trim(Arr(Pos - 1)) => sẽ phát sinh lỗi, và theo bẫy lỗi On Error Resume Next, nó sẽ bỏ qua và thực hiện lệnh tiếp theo, vậy theo bạn lúc đó nó thực hiện lệnh nào? xin thưa, lệnh tiếp theo là thoát khỏi hàm và không có giá trị trả về.
Cái này thì bạn đã sai
Vì tôi khai báo hàm SubString thuộc biến String
PHP:
Function SubString(Text As String, delimeted As String, Pos As Long) As String
Thế nên nếu quá trình tính toán không ra được kết quả gì thì có nghĩa là hàm sẽ có giá trị rỗng
Cũng giống như:
- Biến Long ở bước ban đầu luôn có giá trị = 0
- Biến Boolean ở bước ban đầu luôn có giá trị = FALSE
vân vân...
Đó là những điều hiển nhiên ai cũng biết cơ mà! Lý nào bạn lại... không chấp nhận?
 
Cái này thì bạn đã sai
Vì tôi khai báo hàm SubString thuộc biến String
PHP:
Function SubString(Text As String, delimeted As String, Pos As Long) As String
Thế nên nếu quá trình tính toán không ra được kết quả gì thì có nghĩa là hàm sẽ có giá trị rỗng
Cũng giống như:
- Biến Long ở bước ban đầu luôn có giá trị = 0
- Biến Boolean ở bước ban đầu luôn có giá trị = FALSE
vân vân...
Đó là những điều hiển nhiên ai cũng biết cơ mà! Lý nào bạn lại... không chấp nhận?
Rất cảm ơn các anh. Rất ít khi trên diễn đàn có những trường hợp này. Chính cách thảo luận như thế này làm cho người đọc hiểu sâu vấn đề đề hơn
 
Web KT
Back
Top Bottom