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
' 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 à: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
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
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 minhVầy đủ rồi bạn à:
Chú ý: Khai báo biến rõ ràng, đúng kiểu nhé: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
- 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
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)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ế.
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ảithứ 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.
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ậyVD: 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ả
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ì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
Vầy đủ rồi bạn à:
Chú ý: Khai báo biến rõ ràng, đúng kiểu nhé: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
- 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
Cái này thì bạn đã saiTô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ề.
Function SubString(Text As String, delimeted As String, Pos As Long) As String
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ơnCái này thì bạn đã sai
Vì tôi khai báo hàm SubString thuộc biến 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ỗngPHP:Function SubString(Text As String, delimeted As String, Pos As Long) As String
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?