Tách chi tiết từ tên sản phẩm

Liên hệ QC

ngoinhahoahong1492

Thành viên hoạt động
Tham gia
27/11/09
Bài viết
172
Được thích
155
Nghề nghiệp
Sales
Gửi các anh chị, em có file dữ liệu cần tách (cột tô vàng), mong các anh chị giúp đỡ em.
Em cám ơn rất nhiều.
 

File đính kèm

  • Book2.rar
    349.1 KB · Đọc: 45
Gửi các anh chị, em có file dữ liệu cần tách (cột tô vàng), mong các anh chị giúp đỡ em.
Em cám ơn rất nhiều.
Công thức tại F2 (loằng ngoằng quá, đừng save đè lên nha, đã value công thức):
Mã:
=IF(ISERROR(SEARCH("Buttons",B2)),"",IF(LEFT(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",255)),255*3,255)),7)="Buttons",MID(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",255)),255*3,255)),9,255),LEFT(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",255)),255*3,255)),SEARCH("Buttons",TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",255)),255*3,255)))-2)))
 

File đính kèm

  • Book2.xlsx
    14.6 KB · Đọc: 14
Gửi các anh chị, em có file dữ liệu cần tách (cột tô vàng), mong các anh chị giúp đỡ em.
Em cám ơn rất nhiều.

Thử dùng hàm tự tạo này xem có ok không :
Mã:
Function Buttons(source)
    Dim str$
        str = CStr(source)
        With CreateObject("vbscript.regexp")
            .IgnoreCase = True
            .Pattern = "\s*\w+\s*(?=Buttons)|(?=Buttons).+?(?=,)"
            Buttons = Replace(.Execute(str)(0), "Buttons", "", , , vbTextCompare)
        End With
End Function
 
Gửi các anh chị, em có file dữ liệu cần tách (cột tô vàng), mong các anh chị giúp đỡ em.
Em cám ơn rất nhiều.

Để đơn giản tôi đề nghị thế này

1. Chọn ô F2, đặt name mystring

Mã:
=TRIM(MID(SUBSTITUTE(B2;",";REPT(" ";255));255*3;255))

2. Công thức cho F2

Mã:
=IF(ISERROR(SEARCH("buttons";mystring));"";IFERROR(LEFT(mystring;SEARCH("buttons";mystring)-2);MID(mystring;9;LEN(mystring))))
 
Lần chỉnh sửa cuối:
Thử dùng hàm tự tạo này xem có ok không :
Mã:
Function Buttons(source)
    Dim str$
        str = CStr(source)
        With CreateObject("vbscript.regexp")
            .IgnoreCase = True
            .Pattern = "\s*\w+\s*(?=Buttons)|(?=Buttons).+?(?=,)"
            Buttons = Replace(.Execute(str)(0), "Buttons", "", , , vbTextCompare)
        End With
End Function

Nếu không tìm thấy thì sẽ có #VALUE!. Ngoài ra nên thêm TRIM đề phòng chuỗi nguồn có nhiều dấu cách liên tiếp. Vd. trước pink hoặc Avignon
-------------
Tôi thử không dùng lookahead assertion

Mã:
Function Buttons(ByVal source As String) As String
Dim str, result As String
    With CreateObject("vbscript.regexp")
        .IgnoreCase = True
        .Pattern = "(\w*)\s*buttons\s+([^,]+)"
        If .test(source) Then
            str = .Execute(source)(0)
            Buttons = .Replace(str, "$1")
            If Buttons = "" Then Buttons = .Replace(str, "$2")
        End If
    End With
End Function
 
Thử phương án này xem sao

CT cho ô F2

PHP:
=IFERROR(IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B2,SEARCH(", Buttons",B2)+10,255),",",REPT(" ",255)),255)),TRIM(RIGHT(SUBSTITUTE(LEFT(B2,SEARCH("buttons",B2)-2),",",REPT(" ",255)),255))),"")
 
Thử phương án này xem sao

CT cho ô F2

PHP:
=IFERROR(IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B2,SEARCH(", Buttons",B2)+10,255),",",REPT(" ",255)),255)),TRIM(RIGHT(SUBSTITUTE(LEFT(B2,SEARCH("buttons",B2)-2),",",REPT(" ",255)),255))),"")

Rất "láu cá", he he, nhưng ...
Ta phải lường được những "sự cố". Chuyện không gõ dấu cách sau dấu phẩy hoặc chuyện gõ 2 dấu cách là chuyện thường sẩy ra. Vd. như tôi hay anh ptm0412 (hình như đã có lần nói) tay run run thì chuyện gõ 1 lần mà thành 2 dấu cách là có. Nhiều khi lơ đãng nữa.
Nếu ta có ",Buttons" thì kết quả sai, hoặc ", Buttons" (2 dấu cách) thì mất kết quả.

Trường hợp nhiều dấu cách thì xử lý bằng cách thay B2 bằng TRIM(B2) nhưng th không có dấu cách hơi rách việc.
 
Lần chỉnh sửa cuối:
Rất "láu cá", he he, nhưng ...
Ta phải lường được những "sự cố". Chuyện không gõ dấu cách sau dấu phẩy hoặc chuyện gõ 2 dấu cách là chuyện thường sẩy ra. Vd. như tôi hay anh ptm0412 (hình như đã có lần nói) tay run run thì chuyện gõ 1 lần mà thành 2 dấu cách là có. Nhiều khi lơ đãng nữa.
Nếu ta có ",Buttons" thì kết quả sai, hoặc ", Buttons" (2 dấu cách) thì mất kết quả.

Nếu cứ xét nét dữ liệu quá, thì vấn đề nó cứ lớn to dần bác ah,

nếu 2 dấu cách thì dùng thêm hàm TRIM là được,
còn trường hợp KHÔNG dấu cách thì cũng có cách thay B2 thành TRIM (SUBSTITUE(B2,",",", "))

vậy chung lại có thể dùng cách TRIM (SUBSTITUE(B2,",",", ")) thay cho B2 trên công thức đó là được ---> dĩ nhiên khi đó công thức dài dài

Túm lại, việc áp dụng thế nào thì tùy thuộc vào dữ liệu, giải pháp cũng tùy thuộc vào dữ liệu,

hiện ta chỉ cung cấp cách thức giải pháp dựa trên dữ liệu đã có,
 
Xin vui lòng giúp đỡ công thức trong cột tô vàng ạ.
Xin cám ơn rất nhiều.
 

File đính kèm

  • Book2.rar
    313.7 KB · Đọc: 12
Web KT
Back
Top Bottom