Hỏi về hàm tách chữ

  • Thread starter Thread starter linhdt
  • Ngày gửi Ngày gửi
Liên hệ QC

linhdt

Thành viên chính thức
Tham gia
11/10/06
Bài viết
58
Được thích
108
Mình đang cần các bạn giúp đỡ viết hàm này, cụ thể:
Trong một ô của mình có nội dung như sau: Cty TNHH A / 0101206286 / Mặt hàng A

Mình cần viết FUNCTION có thể tách ra được từng chỉ tiêu:
+ Cty TNHH A
+ 0101206286
+ Mặt hàng A
Mình đã viết công thức để tách được rồi, tuy nhiên để tiện hơn mình cần các bạn chỉ giùm mình viết hàm, chẳng hạn hàm TenDN() , MST() , MHang() sao cho ra được kết quả trên.
Tks các bạn trước
 
Lần chỉnh sửa cuối:
Bạn vào đặt name cho từng hàm tương ứng với từng công thức mà bạn đã tách ra chúng là được
 
Upvote 0
mình nghĩ chỉ dùng làm mid là xong thui là bạn thử xem thế nào nha. nếu không ổn bạn có thể gửi file kèm theo sẽ dễ hơn.
Thân!
 
Upvote 0
hàm thì mình viết được rồi, sorry vì hỏi chưa chuẩn vì thực ra là mình muốn viết function để nhìn đỡ rắc rối hơn, nhờ các bạn về VBA nhé
 
Upvote 0
Mình đang cần các bạn giúp đỡ viết hàm này, cụ thể:
Trong một ô của mình có nội dung như sau: Cty TNHH A / 0101206286 / Mặt hàng A

Mình cần viết FUNCTION có thể tách ra được từng chỉ tiêu:
+ Cty TNHH A
+ 0101206286
+ Mặt hàng A
Mình đã viết công thức để tách được rồi, tuy nhiên để tiện hơn mình cần các bạn chỉ giùm mình viết hàm, chẳng hạn hàm TenDN() , MST() , MHang() sao cho ra được kết quả trên.
Tks các bạn trước

Bạn dùng thử UDF sau.
PHP:
Option Explicit
Option Base 1
Function TachChu(MyStr As String, n As Long) As String
Dim aSplit() As String
Dim SearchChar As String
Dim i As Long, j As Long
SearchChar = "/"
MyStr = Trim(MyStr)
If Len(MyStr) = 0 Or n > 3 Then Exit Function
  aSplit = Split(MyStr, SearchChar, 3)
  TachChu = Trim(aSplit(n - 1))
End Function
cú pháp: Tachchu(....,n) n là 1,2,3 tương ứng
 
Upvote 0
Bạn dùng thử UDF sau.
PHP:
Option Explicit
Option Base 1
Function TachChu(MyStr As String, n As Long) As String
Dim aSplit() As String
Dim SearchChar As String
Dim i As Long, j As Long
SearchChar = "/"
MyStr = Trim(MyStr)
If Len(MyStr) = 0 Or n > 3 Then Exit Function
  aSplit = Split(MyStr, SearchChar, 3)
  TachChu = Trim(aSplit(n - 1))
End Function
cú pháp: Tachchu(....,n) n là 1,2,3 tương ứng
tks bạn ThuNghi nhé, excel thật tuyệt vời. Mình làm về Macro tuy nhiên về hàm thì hơi kém. Một lần nữa cám ơn các bạn :D
 
Upvote 0
Mình đang cần các bạn giúp đỡ viết hàm này, cụ thể:
Trong một ô của mình có nội dung như sau: Cty TNHH A / 0101206286 / Mặt hàng A

Mình cần viết FUNCTION có thể tách ra được từng chỉ tiêu:
+ Cty TNHH A
+ 0101206286
+ Mặt hàng A
Mình đã viết công thức để tách được rồi, tuy nhiên để tiện hơn mình cần các bạn chỉ giùm mình viết hàm, chẳng hạn hàm TenDN() , MST() , MHang() sao cho ra được kết quả trên.
Tks các bạn trước

Cái này hình như cung cần giống như file tách học và tên nhân viên của em, thầy em có chỉ 1 cách dùng hàm là được.
VD: Ô A1 là: Hồ Chí Minh
ta đặt công thức ô B1: =SUBSTITUTE(A1," "," ")
Ô C1=LEFT(A1,LEN(A1)-LEN(D1))
Ô D1=TRIM(RIGHT(A1,6))
Có gì sai mong anh chị chỉ dáo thêm
 
Upvote 0
Mình thấy hàm dùng Split gọn và nhanh hơn. Bạn tham khảo nhé

Mã:
Function tach(ch As String, inde As Integer) As String
Dim kq As Variant
kq = Split(ch, "/")
If inde < 1 Or inde > UBound(kq) + 1 Then
tach = "": Exit Function
End If
tach = kq(inde - 1)
End Function
Cú pháp: Tach(chuoi,phantu)
Ví dụ ô A2 có chuỗi cần tách và cần lấy phần tử thứ 2
=tach(A2,2) = 0101206286
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình thấy hàm dùng Split gọn và nhanh hơn. Bạn tham khảo nhé

Mã:
Function tach(ch As String, inde As Integer) As String
Dim kq As Variant
kq = Split(ch, "/")
If inde < 1 Or inde > UBound(kq) + 1 Then
tach = "": Exit Function
End If
tach = kq(inde - 1)
End Function
Cú pháp: Tach(chuoi,phantu)
Ví dụ ô A2 có chuỗi cần tách và cần lấy phần tử thứ 2
=tach(A2,2) = 0101206286
Anh chỉ cần On Error Goto Thoat là xong ngay mà
PHP:
Function tach(ch As String, inde As Integer) As String
 On Error GoTo Thoat
 tach = Split(ch, "/")(inde - 1)
Thoat:
End Function
Hàm tach được khai báo dạng String, vì vậy nếu thoat và không làm gì cả thì đương nhiên tach = ""
 
Upvote 0
Anh chỉ cần On Error Goto Thoat là xong ngay mà
PHP:
Function tach(ch As String, inde As Integer) As String
 On Error GoTo Thoat
 tach = Split(ch, "/")(inde - 1)
Thoat:
End Function
Hàm tach được khai báo dạng String, vì vậy nếu thoat và không làm gì cả thì đương nhiên tach = ""
GoTo Thoat để làm gì? nếu không để làm gì thì sao không dùng On Error Resume Next khỏi phải thêm Label
 
Upvote 0
GoTo Thoat để làm gì? nếu không để làm gì thì sao không dùng On Error Resume Next khỏi phải thêm Label
Rất có lý!
Nhân đây cũng nói thêm về hàm này! Nếu là tôi thì khi xây dựng hàm, tôi sẽ thêm 1 tham số nữa cho phép chọn ký tự phân cách
Ví dụ:
PHP:
Function SplitText(Text As String, Post As Long, Optional Sep As String = "/") As String
  On Error Resume Next
  SplitText = Split(Text, "/")(Post - 1)
End Function
 
Upvote 0
Em nghĩ hàm ta có thể tham khảo ở đây.

Lê Văn Duyệt
 
Upvote 0
Mình có file này cần lọc dữ liệu số. Rất mong các bạn nếu biết thì chỉ dùm mình nha.
Vì là dữ liệu lấy trên mạng nên tên hàng không giống nhau, nhưng mình lại muốn sort chúng lại. Vì vậy trước tiên mình cần lọc các dữ liệu bằng số.
Chân thành cảm ơn các bạn.
TM
 

File đính kèm

Upvote 0
Mình có file này cần lọc dữ liệu số. Rất mong các bạn nếu biết thì chỉ dùm mình nha.
Vì là dữ liệu lấy trên mạng nên tên hàng không giống nhau, nhưng mình lại muốn sort chúng lại. Vì vậy trước tiên mình cần lọc các dữ liệu bằng số.
Chân thành cảm ơn các bạn.
TM
Tạo một name GPE:
Mã:
GPE=IF(ISNUMBER(--MID(Sheet1!$A8,ROW(INDIRECT("A1:A"&LEN(Sheet1!$A8))),1)),ROW(INDIRECT("A1:A"&LEN(Sheet1!$A8))),"")
Và dùng công thức:
Mã:
B8=MID(A8,MIN(GPE),MAX(GPE)-MIN(GPE)+1)
Xem thêm trong file.
 

File đính kèm

Upvote 0
Tạo một name GPE:
Mã:
GPE=IF(ISNUMBER(--MID(Sheet1!$A8,ROW(INDIRECT("A1:A"&LEN(Sheet1!$A8))),1)),ROW(INDIRECT("A1:A"&LEN(Sheet1!$A8))),"")
Và dùng công thức:
Mã:
B8=MID(A8,MIN(GPE),MAX(GPE)-MIN(GPE)+1)
Xem thêm trong file.

Thành thật cảm ơn bạn vì đã rất nhiệt tình giúp đỡ. Nghe nói giải pháp excel sắp tới có mở lớp học không biết khi nào hy vọng đến lúc đó được tham gia để học hỏi nhiều hơn.
Sẵn đây mình xin hỏi về ý nghĩa của công thức định nghĩa Name để hiểu mà áp dụng cho đúng. VD: "--"; "row(indirect"
Một lần nữa rất cám ơn Thắng.
Mai
 
Upvote 0
Thành thật cảm ơn bạn vì đã rất nhiệt tình giúp đỡ. Nghe nói giải pháp excel sắp tới có mở lớp học không biết khi nào hy vọng đến lúc đó được tham gia để học hỏi nhiều hơn.
Sẵn đây mình xin hỏi về ý nghĩa của công thức định nghĩa Name để hiểu mà áp dụng cho đúng. VD: "--"; "row(indirect"
Một lần nữa rất cám ơn Thắng.
Mai
Bạn có thể vào thư viện để xem công dụng và cách dùng của các hàm. Còn dấu "--", khi bạn tách các ký tự số từ một chuỗi thì kết quả là dạng chuỗi. Dùng "--" để chuyển kết quả từ dạng chuỗi sang dạng số.
 
Upvote 0
Bạn có thể vào thư viện để xem công dụng và cách dùng của các hàm. Còn dấu "--", khi bạn tách các ký tự số từ một chuỗi thì kết quả là dạng chuỗi. Dùng "--" để chuyển kết quả từ dạng chuỗi sang dạng số.

Cám ơn Thắng nhiều! Các bạn trong diễn đàn thật nhiệt tình. Rất mong sớm được tham gia các lớp bổ sung kiến thức từ diễn đàn
T. Mai
 
Upvote 0
Mình thấy hàm dùng Split gọn và nhanh hơn. Bạn tham khảo nhé

Mã:
Function tach(ch As String, inde As Integer) As String
Dim kq As Variant
kq = Split(ch, "/")
If inde < 1 Or inde > UBound(kq) + 1 Then
tach = "": Exit Function
End If
tach = kq(inde - 1)
End Function
Cú pháp: Tach(chuoi,phantu)
Ví dụ ô A2 có chuỗi cần tách và cần lấy phần tử thứ 2
=tach(A2,2) = 0101206286

Nhờ bạn xem giúp file này bị lỗi gì mà lọc không được.
Xin cám ơn
Mai
 

File đính kèm

Upvote 0
Nhờ các bạn xem giúp file này bị lỗi gì mà lọc không được.
Xin cám ơn
Mai
 
Upvote 0
Xin chỉ giáo giùm, trong trường hợp tách Tên (trong Họ & Tên), và tên thì vô chừng là thứ 3,4,5, có hàm nào kết hợp, đếm số chữ, để chọn đúng &tách TÊN ra khỏi HỌ VÀ TÊN.
Chân thành cảm ơn.

Mình thấy hàm dùng Split gọn và nhanh hơn. Bạn tham khảo nhé

Mã:
Function tach(ch As String, inde As Integer) As String
Dim kq As Variant
kq = Split(ch, "/")
If inde < 1 Or inde > UBound(kq) + 1 Then
tach = "": Exit Function
End If
tach = kq(inde - 1)
End Function
Cú pháp: Tach(chuoi,phantu)
Ví dụ ô A2 có chuỗi cần tách và cần lấy phần tử thứ 2
=tach(A2,2) = 0101206286
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom