Xin giải pháp tách mã phiếu từ nội dung tổng hợp có nhiều thông tin

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Chỉ có việc copy cái cột chứa dữ liệu vào 1 sheet rồi gởi lên mà không làm được thì còn làm được gì tốt hơn? Nhìn lướt qua thì cũng không đến nổi quá khó. Tuy nhiên không biết ông bà nào đã tạo ra 1 loại dữ liệu nguồn đáng kính nể. Bái phục thiệt đó.
:D dạ cảm ơn bác đóng góp ý kiến ạ, việc cop dữ liệu thì nó không khó, mà vì công ty em có quy định nên em cũng phải cân nhắc, do vậy em mới phải làm giả định ạ.
Bài đã được tự động gộp:

Có thể cần một function en-Regex Pattern.
Bạn đưa TẤT CẢ các mẫu lên (nằm trong một WorkSheet nào đó). Nếu rảnh tôi sẽ viết cài hàm encode này.
em hiểu ý của bác rồi, em cũng nghĩ về giải pháp như vậy mà em không biết code như thế nào cho chuẩn :D cảm ơn bác nhiều
 
Ông Vietcombank đó bác. Bác mở cái tài khoản, nhận tiền hơn 100 giao dịch một ngày sẽ thấy thôi.
Cái Reference chỉ dùng để nhắc nhở. Dùng để tìm cái phát sinh có chứa chuỗi X.
Nhà băng, nếu không có cách khác để sort thì họ dùng dạng cube để lọc tìm. Ngoài khả năng của hầu hết người trên đây.

@thớt: Regex chỉ có hiệu quả nếu số biểu mẫu không lớn lắm.
 
Có thể cần một function en-Regex Pattern.
Bạn đưa TẤT CẢ các mẫu lên (nằm trong một WorkSheet nào đó). Nếu rảnh tôi sẽ viết cài hàm encode này.
bác ơi với mẫu các mã cần tách ntn thì function này sửa ntn được vậy bác? nhờ bác giúp đỡ
 

File đính kèm

  • mẫu mã cần tách.xlsx
    9.1 KB · Đọc: 17
Tách thử bằng M code cho những tín đồ power query ngâm cứu ...
 

File đính kèm

  • mẫu mã cần tách222.xlsx
    18.4 KB · Đọc: 7
Tôi chỉ làm đến đây thôi. Sau này còn dùng từ "ntn" nữa thì tôi miễn trả lời và không cần nêu lý do.

Mã:
Function LayMa(ByVal s As String, Optional ByRef patTxt As String = "") As String
' Converts certain coded texts from a CSV string to regex code

    If patTxt = "" Then _
    patTxt = "xxxxxPTxx,xxxxxCCxx,xxxxxBAC,xxxBxx,xxxxMNx"
    
CREATE_REGEX_ENGINE:

    Dim RE As Object
    Set RE = CreateObject("vbscript.regexp")
    RE.IgnoreCase = ignore_case
    RE.Global = True
    
BUILD_PATTERN_FOR_CODETEXTS:
    
    patTxt = Replace(patTxt, ",", "#")
    For Each e In Array("xxxxx", "xxxx", "xxx", "xx", "x")
        RE.Pattern = e & "([A-Z])"
        patTxt = RE.Replace(patTxt, "\d{1," & Len(e) & "}$1")
    Next e
    For Each e In Array("xxx", "xx", "x")
        RE.Pattern = "(\\d\{1,\d\}[A-Z]+)" & e
        patTxt = RE.Replace(patTxt, "$1" & "\d{1," & Len(e) & "}")
    Next e
    RE.Pattern = Replace(patTxt, "#", "|")
    
TEST_AND_GET_VALUES:

    Set Matches = RE.Execute(s)
    If Matches.Count > 0 Then
        For Each e In Matches
            LayMa = LayMa & "," & e
        Next e
        LayMa = Mid(LayMa, 2)
    End If

THATS_ALL:
End Function

Cách dùng:
=LayMa(ô chứa dữ liệu)
 
bác ơi với mẫu các mã cần tách ntn thì function này sửa ntn được vậy bác? nhờ bác giúp đỡ
Dùng hàm tự tao
Mã:
Function TachMa(ByVal str$) As String
  Dim a, b, c, S, P, i, j
 
  a = Array("PT", "CC", "B", "MN", "BAC")
  b = Array(5, 5, 3, 5, 5)
  c = Array(2, 2, 2, 1, 0)
 
  S = Split(Trim(Replace(str, ".", " ")), " ")
  For i = 0 To UBound(S)
    For j = 0 To UBound(a)
      If InStr(1, S(i), a(j), 0) Then
        P = Split(S(i), a(j))
        If UBound(P) = 1 Then
          If IsNumeric(P(0)) And Len(P(0)) <= b(j) And Len(P(1)) <= c(j) Then
            If j = 4 Then P(1) = "0"
            If IsNumeric(P(1)) Then TachMa = TachMa & ", " & S(i)
          End If
        End If
      End If
    Next j
  Next i
  If TachMa <> Empty Then TachMa = Mid(TachMa, 3)
End Function
Lưu ý, không nên dùng từ viết tắt nhằm thể hiện lịch sự và tôn trọng người khác.
 
Web KT
Back
Top Bottom