pdt1234567
Thành viên mới

- Tham gia
- 27/7/07
- Bài viết
- 6
- Được thích
- 2
Thử:Kính gửi: A/c
A/c giúp tách 1 mã đơn vị trong File đính kèm
Cụ thể ở dòng đầu tiên muốn lấy TA5450A, Dòng 2 T9000, Dòng 3 lấy QW0004A
=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",50)),50))
Bài này tách mã ko có quy luật, nên dùng 1 danh sách mã hàng có sẵn rồi dùng hàm mới đượcThử:
Mã:=TRIM(RIGHT(SUBSTITUTE(A1," ",REPT(" ",50)),50))
Cố gắng tham khảo và thực hiện đúng như gợi ý của anh @SA_DQ tại bài #4 trên.Kính gửi: A/c
A/c giúp tách 1 mã đơn vị trong File đính kèm
Cụ thể ở dòng đầu tiên muốn lấy TA5450A, Dòng 2 T9000, Dòng 3 lấy QW0004A
B1=MID($A1,AGGREGATE(15,6,SEARCH(OFFSET($G$2,,,COUNTA($G$2:$G$101))&COLUMN($A:$J)-1,$A1),1),7)
Phải tạo các Mã cần tìm nữa chứ, chính nhờ có nó mới phân biệt được mấy thứ lôm côm khác.Bác Phan Thế Hiệp giúp em ạh. Em đưa vào cái mẫu cụ thể của em mà làm mãi không được
Tôi suy đoán quy luật từ dữ liệu mẫu nhé, code áp dụng quy luật sau:Bác Phan Thế Hiệp giúp em ạh. Em đưa vào cái mẫu cụ thể của em mà làm mãi không được
Function LayMa(ByVal NoiDung As String) As String
Dim oMatches As Object, oMatch As Object
With CreateObject("VBScript.RegExp")
.Global = True
.IgnoreCase = True
.Pattern = "((MA)|(MA SO)|(MDV)|(MA DV)|(MA DON VI))[^A-Z]+([A-Z]{1,2}\d{4}[A-Z0-9]{0,1})[^A-Z0-9]*"
If .Test(NoiDung) Then
LayMa = .Execute(NoiDung)(0).SubMatches(6)
Else
.IgnoreCase = False
.Pattern = "[^A-Z]*([A-Z]{1,2}\d{4}[A-Z0-9]{0,1})[^A-Z0-9]*"
If .Test(NoiDung) Then
Set oMatches = .Execute(NoiDung)
For Each oMatch In oMatches
LayMa = LayMa & "/" & oMatch.SubMatches(0)
Next
LayMa = Mid(LayMa, 2)
End If
End If
End With
End Function
Quy luật của mã:Bác Phan Thế Hiệp giúp em ạh. Em đưa vào cái mẫu cụ thể của em mà làm mãi không được
Function MaDV(ByVal NoiDung As String) As String
Dim S As Variant, tmp As String, i As Long
S = Split(Application.Trim(Replace(Replace(Replace(NoiDung, ":", " "), "-", " "), ".", " ")))
For i = 0 To UBound(S)
tmp = S(i)
If Len(tmp) > 4 And Asc(tmp) > 64 And Asc(tmp) < 91 Then
If IsNumeric(Mid(tmp, 3, 3)) Then
MaDV = tmp
Exit Function
End If
End If
Next i
End Function
C5 =MaDV(G5)
D5 =IFERROR(LEFT(E5,FIND("A/C",E5)-3),E5)