Tách chuỗi lấy code hàng

Liên hệ QC

tranvoluong

Thành viên mới
Tham gia
9/4/11
Bài viết
23
Được thích
2
Thân chào anh em,

Lần trước em có nhờ anh em giúp đỡ tách chuỗi lấy code hàng trong file https://www.giaiphapexcel.com/forum...ng-trong-chuỗi&p=751019&highlight=#post751019

Lần này cũng tương tự, em xử lý được tới khúc đưa tất cả code hàng về phía cuối rồi nhưng lúc dùng (replace * khoảng trắng để lấy code hàng thì không được) > nó xóa hết trơn luôn không để lại cái code cho mình, thử lấy đoạn code của anh @doatmehon rồi không ăn thua

Mã:
Function Rut(s As String) As StringWith CreateObject("VBScript.RegExp")
  .Pattern = "([A-Z]{0,10}[0-9]{1,10}[-|/|.]?[A-Z]{0,10}[-|/|.]?[A-Z]{0,10}[0-9]{0,10}[-|/|.]?[0-9]{0,10}[A-Z]{0,10}[-|/|.]?[A-Z]{0,10})$"
  If .Test(s) Then Rut = .Execute(s)(0).SubMatches(0)
End With
End Function

Không biết vì lý do gì, file này được chuyển từ excel thành spreadsheet, rồi từ speadsheet thành excel (không biết có bị lỗi định dạng gì không)

Mong anh em giúp đỡ, em xin chân thành cám ơn trước.
 

File đính kèm

  • tach chuoi.xls
    66 KB · Đọc: 11
Lần chỉnh sửa cuối:
Dùng ctrl+H và Text to columns
- Chọn toàn bộ cột dữ liệu
- Nhấn ctrl+H
Lần 1 : find what:"hàng"; replace with:"#"; nhấn replace all
Lần 2 : find what:"hiệu"; replace with:"#"; nhấn replace all
nhấn esc
- Nhấn alt + D + E gọi Text to columns
other: "#"; finish

Lấy kết quả tại cột đầu tiên
 
Dùng ctrl+H và Text to columns
- Chọn toàn bộ cột dữ liệu
- Nhấn ctrl+H
Lần 1 : find what:"hàng"; replace with:"#"; nhấn replace all
Lần 2 : find what:"hiệu"; replace with:"#"; nhấn replace all
nhấn esc
- Nhấn alt + D + E gọi Text to columns
other: "#"; finish

Lấy kết quả tại cột đầu tiên

Không được bạn ơi, kết quả mình muốn lấy là mấy cái chuỗi cuối cùng cơ.
 
Không được bạn ơi, kết quả mình muốn lấy là mấy cái chuỗi cuối cùng cơ.
Kết quả mong muốn là thế nào bạn. Có phải là nằm trong sheet "xuly". Nếu ko thì bạn làm 1 vài kết quả ví dụ thì mới biết code bạn muốn lấy là thế nào.
 
Cái function kia dựa vào RegEx pattern để tách chuỗi. Lúc đua cho bạn code này, người viết có nói "cần phải chỉnh sửa để ra kết quả cuối cùng".

Vì nó dài lằng ngoằng, lại viết theo kiểu tới đâu thêm tới đó, không có chú thích mục đích của pattern cho nên chỉ ngừoi viết nó mới sửa được.

Giải thích thêm: phần mềm xử ý gồm 2 phần, phần giải thuật và phần code.
Code dài mà không có chú thích thì ngừoi đọc không thể biết do code đúng nhưng giải thuật sai; hay giải thuật đúng nhưng code không theo đúng giải thuật.
 
Cái function kia dựa vào RegEx pattern để tách chuỗi. Lúc đua cho bạn code này, người viết có nói "cần phải chỉnh sửa để ra kết quả cuối cùng".

Vì nó dài lằng ngoằng, lại viết theo kiểu tới đâu thêm tới đó, không có chú thích mục đích của pattern cho nên chỉ ngừoi viết nó mới sửa được.

Giải thích thêm: phần mềm xử ý gồm 2 phần, phần giải thuật và phần code.
Code dài mà không có chú thích thì ngừoi đọc không thể biết do code đúng nhưng giải thuật sai; hay giải thuật đúng nhưng code không theo đúng giải thuật.

Chả rõ chủ Topic hỏi về RegEx.Pattern hay về tách chuỗi. Bất luận là hỏi gì thì cũng lửng lơ mặc anh em lần mò.
-Nếu hỏi RegEx.Pattern thì phải nêu rõ cái mẫu ấy cần lọc lấy cái gì và bỏ cái gì chứ.
-Nếu là tách chuỗi lấy tên hàng thì cũng phải trong mỗi cái chuỗi ấy thì đoạn nào coi là tên hàng, đoạn nào bỏ đi (Nhất là tiêu chuẩn phân biệt từng đoạn)
 
Banh tập thể dục bằng cao su;UltraFit Endurance Medicine Ball - 11 lb, 9.5" dia, Violet;69-923;Hàng mới 100 %
Banh tập thể dục bằng cao su;UltraFit Endurance Medicine Ball - 15 lb, 7.5" dia, Grey;69-922;hàng mới 100%
Banh tập thể dục bằng cao su;UltraFit Endurance Medicine Ball - 20 lb, 7.5" dia, Black;69-923;hàng mới 100%
Banh tập thể dục bằng cao su;UltraFit Endurance Medicine Ball - 4 lb, 7.5" dia, Red;69-920;Hàng mới 100 %
Banh tập thể dục bằng cao su;UltraFit Endurance Medicine Ball - 4 lb, 7.5" dia, Red;69-920;hàng mới 100%


Em muốn xử lý làm sao để có được cái code 69-xxx ra một cột riêng là được rồi ạ
 
Dữ liệu bắt đầu từ A1
Mã:
=TRIM(LEFT(RIGHT(SUBSTITUTE(A1,";",REPT(" ",100)),200),100))
 
Web KT
Back
Top Bottom