Houserobot
Thành viên mới

- Tham gia
- 25/5/23
- Bài viết
- 11
- Được thích
- 1
Tôi giải một bài y hệt bài này của bạn ở bên dưới bài của bạn 2 bài mà sao mà bạn tìm kiểu gì mà không thấy???Chào các ACE!
Nhờ các ACE thiết lặp giúp công thức tách chuỗi ký tự ở cột D2, E2, F2 trong chuỗi nguồn có độ dài khác nhau ở các ô tương ứng.
Đã tìm trên diễn đàn mà không thấy, mong các cao nhân giúp đỡ.
View attachment 299624
Cảm ơn nhiều
Sorry bạn, trong bài đó mọi người đề cập đến VBA, mình thì không hiểu về mảng này. Vì vậy mới post lại nhờ mọi người xem qua giúp, có thể thiết lập công thức tương đối thôi cũng được.Tôi giải một bài y hệt bài này của bạn ở bên dưới bài của bạn 2 bài mà sao mà bạn tìm kiểu gì mà không thấy???
Dạng bài của bạn tách tùm lum vậy ai mà viết công thức nổi, chỉ có thể giải bằng VBA hoặc Power Query thôi. Tôi đã giải bằng Power query, anh chị khác giải bằng VBA. Vì dạng nó y hệt như bài trước nếu mở rộng dữ liệu thì viết công thức sao nổi.Sorry bạn, trong bài đó mọi người đề cập đến VBA, mình thì không hiểu về mảng này. Vì vậy mới post lại nhờ mọi người xem qua giúp, có thể thiết lập công thức tương đối thôi cũng được.
Thank bạn đã góp ý, để mình tìm hiểu thêm về Power Query.Dạng bài của bạn tách tùm lum vậy ai mà viết công thức nổi, chỉ có thể giải bằng VBA hoặc Power Query thôi. Tôi đã giải bằng Power query, anh chị khác giải bằng VBA. Vì dạng nó y hệt như bài trước nếu mở rộng dữ liệu thì viết công thức sao nổi.
Bạn dùng công thức sauChào các ACE!
Nhờ các ACE thiết lặp giúp công thức tách chuỗi ký tự ở cột D2, E2, F2 trong chuỗi nguồn có độ dài khác nhau ở các ô tương ứng.
Đã tìm trên diễn đàn mà không thấy, mong các cao nhân giúp đỡ.
View attachment 299624
Cảm ơn nhiều
Định lượng=VALUE(RIGHT(SUBSTITUTE(LEFT(C2,SEARCH("gsm/",C2)-1)," ",REPT(" ",20)),20))
Khổ cắt=VALUE(RIGHT(SUBSTITUTE(LEFT(C2,SEARCH("mm/",C2)-1),"/",REPT(" ",20)),20))
Dài=VALUE(LEFT(SUBSTITUTE(RIGHT(C2,LEN(C2)-SEARCH("mm/",C2)-2),"M",REPT(" ",20)),20))
Hoặc dùng E365
=REDUCE({"Định lượng","Khổ cắt","Dài"},MAP(C2:C4,LAMBDA(m,LET(t,TEXTSPLIT(m,," "),FILTER(t,IFERROR(FIND("GSM/",t),))))),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,{"G","S","M","/"},,1))))
=LET(
Tensp, C2:C4,
tachvitri1, FIND("GSM/", Tensp),
Định_lượng,IFERROR(VALUE(RIGHT(SUBSTITUTE(LEFT(Tensp,SEARCH("GSM/",Tensp)-1)," ",REPT(" ",20)),20)),"Không tìm thấy định lượng"),
Khocat_diemdau, tachvitri1 + 4,
Khocat_diemcuoi, FIND("MM", Tensp, Khocat_diemdau),
Khổ_cắt, IFERROR(VALUE(MID(Tensp, Khocat_diemdau, Khocat_diemcuoi - Khocat_diemdau)), "Không tìm thấy khổ cắt"),
Dài_diemdau, Khocat_diemcuoi + 3,
Dài_diemcuoi, FIND("M", Tensp, Dài_diemdau),
Dài, IFERROR(VALUE(MID(Tensp, Dài_diemdau, Dài_diemcuoi - Dài_diemdau)), "Không tìm thấy chiều dài"),
HSTACK(Định_lượng, Khổ_cắt, Dài)
)
Cám ơn bạn đã hỗ trợ, công thức phần định lượng, khổ cắt thì cho kết quả đúng.Bạn dùng công thức sau
Mã:Định lượng=VALUE(RIGHT(SUBSTITUTE(LEFT(C2,SEARCH("gsm/",C2)-1)," ",REPT(" ",20)),20)) Khổ cắt=VALUE(RIGHT(SUBSTITUTE(LEFT(C2,SEARCH("mm/",C2)-1),"/",REPT(" ",20)),20)) Dài=VALUE(LEFT(SUBSTITUTE(RIGHT(C2,LEN(C2)-SEARCH("mm/",C2)-2),"M",REPT(" ",20)),20)) Hoặc dùng E365 =REDUCE({"Định lượng","Khổ cắt","Dài"},MAP(C2:C4,LAMBDA(m,LET(t,TEXTSPLIT(m,," "),FILTER(t,IFERROR(FIND("GSM/",t),))))),LAMBDA(x,y,VSTACK(x,TEXTSPLIT(y,{"G","S","M","/"},,1))))
Cám ơn bạn đã nhiệt tình giúp đỡ, mình sẽ tìm hiểu thêm vì mình cũng không rành về Hàm hay VBA nên có đôi chút khó khăn.Cái bài trước đó nó định dạng tách ký tự tùm lum rất phức tạp, giống như dọn rác, còn nếu bài của bạn định dạng chỉ có giống như ba dòng trong file, thì bạn có thể dùng hàm sau:
=LET( Tensp, C2:C4, tachvitri1, FIND("GSM/", Tensp), Định_lượng,IFERROR(VALUE(RIGHT(SUBSTITUTE(LEFT(Tensp,SEARCH("GSM/",Tensp)-1)," ",REPT(" ",20)),20)),"Không tìm thấy định lượng"), Khocat_diemdau, tachvitri1 + 4, Khocat_diemcuoi, FIND("MM", Tensp, Khocat_diemdau), Khổ_cắt, IFERROR(VALUE(MID(Tensp, Khocat_diemdau, Khocat_diemcuoi - Khocat_diemdau)), "Không tìm thấy khổ cắt"), Dài_diemdau, Khocat_diemcuoi + 3, Dài_diemcuoi, FIND("M", Tensp, Dài_diemdau), Dài, IFERROR(VALUE(MID(Tensp, Dài_diemdau, Dài_diemcuoi - Dài_diemdau)), "Không tìm thấy chiều dài"), HSTACK(Định_lượng, Khổ_cắt, Dài) )
View attachment 299631
Hàm không phải thế mạnh của tôi, tôi mới học hàm 365 hôm nay là ngày thứ 2, cho nên hàm của bạn hocexcel_1991 ở trên tôi chưa hiểu được, chỉ làm dạng tuần tự như kiểu ghi từng bước thôi(tách từng cột 1).
Nếu nó có quá nhiều yếu tố cần tách thì nên chọn VBA hoặc Power Query hoặc python, để viết hàm giải quyết nhiều yếu tố thì chắc phải hiểu biết sâu về logic mới viết được.
Cám ơn bạn hocexcel_1991 mình đã khắc phục được rồi nhé.Cám ơn bạn đã hỗ trợ, công thức phần định lượng, khổ cắt thì cho kết quả đúng.
Còn công thức Dài=... khi cột C là "m thường" thì báo lỗi value, nhờ bạn xem qua giúp mình với.
Dài=VALUE(LEFT(SUBSTITUTE(RIGHT(C2,LEN(C2)-SEARCH("mm/",C2)-2),"M",REPT(" ",20)),20))
Bài đã được tự động gộp:
Cám ơn bạn đã nhiệt tình giúp đỡ, mình sẽ tìm hiểu thêm vì mình cũng không rành về Hàm hay VBA nên có đôi chút khó khăn.
Vậy bạn thêm hàm UPPER là đượcCòn công thức Dài=... khi cột C là "m thường" thì báo lỗi value, nhờ bạn xem qua giúp mình với.
mình cũng thêm y vậy, cám ơn bạn.Vậy bạn thêm hàm UPPER là được
=VALUE(LEFT(SUBSTITUTE(UPPER(RIGHT(C2,LEN(C2)-SEARCH("mm/",C2)-2)),"M",REPT(" ",20)),20))