KUMI
Bụi phấn
- Tham gia
- 17/1/12
- Bài viết
- 564
- Được thích
- 572




Hoặc cách này: (ngắn hơn của bác sealand)Tuy dai nhưng theo logic của bạn và đơn giản:
=E8&": ("&E9&IF($E10<>"","-"&E10,"")&IF($E11<>"","-"&E11,"")&IF($E12<>"","-"&E12,"")&IF($E13<>"","-"&E13,"")&IF($E14<>"","-"&E14,"")&IF($E15<>"","-"&E15,"")&IF($E16<>"","-"&E16,"")&IF($E17<>"","-"&E17,"")&IF($E18<>"","-"&E18,"")&IF($E19<>"","-"&E19,"")&IF($E20<>"","-"&E20,"")&IF($E21<>"","-"&E21,"")&IF($E22<>"","-"&E22&")",")")
=E8&": ("&SUBSTITUTE(TRIM(SUBSTITUTE(E9&"-"&E10&"-"&E11&"-"&E12&"-"&E13&"-"&E14&"-"&E15&"-"&E16&"-"&E17&"-"&E18&"-"&E19&"-"&E20&"-"&E21&"-"&E22&")","-"," "))," ","-")
Híc, chắc hôm nay Thầy Sealand hết sức rảnh rỗi hoặc đang..........yêu đâyTuy dai nhưng theo logic của bạn và đơn giản:
=E8&": ("&E9&IF($E10<>"","-"&E10,"")&IF($E11<>"","-"&E11,"")&IF($E12<>"","-"&E12,"")&IF($E13<>"","-"&E13,"")&IF($E14<>"","-"&E14,"")&IF($E15<>"","-"&E15,"")&IF($E16<>"","-"&E16,"")&IF($E17<>"","-"&E17,"")&IF($E18<>"","-"&E18,"")&IF($E19<>"","-"&E19,"")&IF($E20>"","-"&E20,"")&IF($E21<>"","-"&E21,"")&IF($E22<>"","-"&E22&")",")")

View attachment gui ban.xlsXin chào Thầy Cô và Anh Chị trong GPE!
Em đang gặp phải một vướng mắc về Hàm nối chuỗi... Chi tiết vấn đề em đã viết cụ thể trong file đính kèm.
Thầy Cô và Anh Chị xem file rồi tìm cách giúp em với ạ!
Xin cảm ơn!
KUMI ngâm cứu hàm JoinText của thầy Ndu xem tại đây.Xin Cảm ơn các Thầy đã cố gắng tìm cách giúp đỡ!
Đúng như Thầy Cò nói: Đây chỉ là minh họa thôi ạ! Còn vùng dữ liệu thật của Em cỡ phải 70~80 dòng.
các Thầy có thể viết hàm tổng quát bằng VBA để em áp dụng cũng được ạ!
Tuy nhiên với bài này em vẫn muốn dùng công thức hơn. Nhưng cách nào hay thì em theo ạ!
Xin cảm ơn GPE!
Mình viết cho bạn 2 hàm Gom & GomA xử dụng cho dữ liệu trong bài của bạnXin Cảm ơn các Thầy đã cố gắng tìm cách giúp đỡ!
Đúng như Thầy Cò nói: Đây chỉ là minh họa thôi ạ! Còn vùng dữ liệu thật của Em cỡ phải 70~80 dòng.
các Thầy có thể viết hàm tổng quát bằng VBA để em áp dụng cũng được ạ!
Tuy nhiên với bài này em vẫn muốn dùng công thức hơn. Nhưng cách nào hay thì em theo ạ!
Xin cảm ơn GPE!
Bạn í chưa biết gì về VBA mà Leo chỉ bạn í đọc bài của Thầy Ndu chắc bạn í bị tẩu hỏa nhập ma quáleonguyenz
KUMI ngâm cứu hàm JoinText của thầy Ndu xem tại đây.
Bạn khỏi suy nghĩ giải quyết bằng công thức chi cho mệt (dù có cách thì khả năng tùy biến cũng quá kém)Xin chào Thầy Cô và Anh Chị trong GPE!
Em đang gặp phải một vướng mắc về Hàm nối chuỗi... Chi tiết vấn đề em đã viết cụ thể trong file đính kèm.
Thầy Cô và Anh Chị xem file rồi tìm cách giúp em với ạ!
Xin cảm ơn!
Function JoinText(ByVal Delimiter As String, ByVal IgnoreBlanks As Boolean, ParamArray Arrays()) As String
Dim aTmp, Arr(), Item, tmp As String
Dim i As Long, n As Long
On Error Resume Next
For i = LBound(Arrays) To UBound(Arrays)
aTmp = Arrays(i)
If Not IsArray(aTmp) Then aTmp = Array(aTmp)
For Each Item In aTmp
tmp = IIf(TypeName(Item) = "Error", "", Trim(CStr(Item)))
If IgnoreBlanks = False Or Len(tmp) Then
n = n + 1
ReDim Preserve Arr(1 To n)
Arr(n) = tmp
End If
Next
Next
If n Then JoinText = Join(Arr, Delimiter)
End Function
Chính vì chưa biết VBA mới cần 1 hàm ở mức tổng quát để người ta có thể áp dụng trên mọi kiểu dữ liệu anh àBạn í chưa biết gì về VBA mà Leo chỉ bạn í đọc bài của Thầy Ndu chắc bạn í bị tẩu hỏa nhập ma quá
Thân


Chính vì chưa biết VBA mới cần 1 hàm ở mức tổng quát để người ta có thể áp dụng trên mọi kiểu dữ liệu anh à
Nói thêm hàm của anh có dùng Join e rằng không ăn thua. Lý do vì: Làm sao anh chắc rằng dữ liệu của người ta luôn là 1 cột nhiều dòng?
Hàm của thầy tổng quát quá muốn áp dụng vào một số file nhưng chưa được. Đợi vấn đề của Kumi song em xin được chen ngang một File sau


Nhờ các thầy và mọi người giúp giải pháp nối chuỗi có điều kiện như sau:
Ghép tên lớp số lượng và số điểm thành một chuỗi text với điều kiện số lượng là 0 hoặc để trống thì bỏ qua
(NHìn vào số liệu báo cáo kết quả số lượng bằng 0 thì bỏ qua không báo)
Ghi chú thang điểm có thể lên đến 100 ... Sợ hàm If dài
Chi tiết em có File đính kèm và có kết quả mong muốn ở dưới
="Lớp "&F1&": "&JoinText("; ",TRUE,IF(F4:F13="","",F4:F13&" điểm "&$B$4:$B$13))


Nếu bạn đã có hàm tự tạo của tôi trong module rồi thì gõ công thức này vào cell F17 nhé:
Bấm Ctrl + Shift + Enter để kết thúc. Kéo fill sang phảiMã:="Lớp "&F1&": "&JoinText("; ",TRUE,IF(F4:F13="","",F4:F13&" điểm "&$B$4:$B$13))
Xong!
Chính vì chưa biết VBA mới cần 1 hàm ở mức tổng quát để người ta có thể áp dụng trên mọi kiểu dữ liệu anh à
Nói thêm hàm của anh có dùng Join e rằng không ăn thua. Lý do vì: Làm sao anh chắc rằng dữ liệu của người ta luôn là 1 cột nhiều dòng?
s = JoinText("-", True, Arraỵ(3, 5, "hichic", 8, "tenten", [COLOR=#ff0000]co_tu_dau_do[/COLOR], "he"))
s = JoinText("-", True, 3, 5, "hichic", 8, "tenten", [COLOR=#ff0000]co_tu_dau_do[/COLOR], "he")



Ẹc... Ẹc...=e8&":"&"("&e9&"-"&e11&"-"&e12&"-"&e13&"-"&e14&"-"&e15&"-"&e20&"-"&e22&")"
Ẹc... Ẹc...
Công thức này mà xài được thì... khỏe rồi (khỏi lập trình nhỉ?)