Addins: Nối các ô với nhau thành chuỗi, trong chuỗi các ô được cách nhau = dấu phẩy
Chào cả nhà!
Do tính chất công việc thường xuyên nối chuỗi, mình nhờ các bạn viết giúp AddIns nối chuỗi như sau:1/ Giả sử tại cột A mình có các số liệu như sau:
Cell A1: 123
Cell A2: abc
Cell A3: 456
Cell A4: LÀ CELL TRỐNG
Cell A5: 1aa
Cell A6: 789
Cell A7: def2/ Giả sử tên Addin là Noi, mình muốn kết qủa như sau:
a/ Trường hợp 1: =Noi(A1:A3) cho kq : 123,abc,456b/ Trường hợp 2: =Noi(A1:A5) cho kq : 123,abc,456,1aa (Lưu ý ở đây đã không tính cell trống)
c/ Trường hợp 3: =Noi(A1:A5,A7) cho kq : 123,abc,456,1aa,def
Cảm ơn các bạn đã xem & giúp đỡ.
—————
P/s: Nếu trường hợp 2 hay 3 khó kg làm được thì có thể bỏ qua
Nó đây:
Function JoinText(ByVal Sep As String, ByVal IgnoreBlanks As Boolean, ParamArray sArray()) As String
Dim tmpArr, SubArr, Arr(), Item, n As Long, tmp As String
'On Error Resume Next
For Each SubArr In sArray
tmpArr = IIf(IsArray(SubArr), SubArr, Array(SubArr))
For Each Item In tmpArr
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, Sep)
End Function
Cú pháp
=JoinText(Dấu phân cách, bỏ qua giá trị rổng hay không?, Dữ liệu)
Ví dụ:
=JoinText(", ", TRUE, A1:A3) sẽ nối các giá trị khác rổng của vùng A1:A3 thành 1 chuổi với dấu phẩy là dấu phân cách
Hàm này cho phép nối chuổi với những điều kiện phức tạp…. Ví dụ:
=JoinText(" – ",TRUE,IF(FIND("b",$G$1:$G$4),$G$1:$G$4,""))
Nghĩa là trong vùng G1:G4, cell nào có ký tự "b" thì lấy
Hàm cũng cho phép nối các vùng không liên tục… Ví dụ:
=JoinText(", ", TRUE, A1:A5, A7)
vân vân… bạn tự khám phá nhé
www.giaiphapexcel.com/diendan/threads/addins-n%E1%BB%91i-c%C3%A1c-%C3%B4-v%E1%BB%9Bi-nhau-th%C3%A0nh-chu%E1%BB%97i-trong-chu%E1%BB%97i-c%C3%A1c-%C3%B4-%C4%91%C6%B0%E1%BB%A3c-c%C3%A1ch-nhau-d%E1%BA%A5u-ph%E1%BA%A9y.76058/
Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...
Xem khóa học
=JoinText("; ",TRUE,IF(SUBTOTAL(3,OFFSET($B$1,ROW(B2:B13)-1,)), B2:B13,""))
Xin lưu ý rằng hàm JOINTEXT đã được cải tiến khác cái bạn đang dùng nha
Code như sau:
Do đó công thức bài #6 cũng phải sửa lại:
Không có TRUE, FALSE gì ráo
Sau khi gõ công thức xong Bạn kết thúc bằng Ctrl+Shift+Enter là được
Thầy đi nhậu mất rùi
Đây là hàm JOINIF của Thầy [URL='https://www.giaiphapexcel.com/diendan/goto/post?id=853572'%5Dndu96081631
Cái công thức này: IF(SUBTOTAL(3,OFFSET($B$1,ROW(B2:B13)-1,)), B2:B13,1/0) Thầy [URL='https://www.giaiphapexcel.com/diendan/goto/post?id=853572'%5Dndu96081631 đang để nếu không thỏa mãn điều kiện sẽ bằng 1/0(#Value!)
Chi sửa lại thành: Nếu không thỏa mãn thì bằng 0. Trong hàm JoinIf Chị cho cái CriteriaArray =">0" là được
Công thức F1=JoinIf("; ";IF(SUBTOTAL(3;OFFSET($B$5;ROW(B6:B19)-5;)); B6:B19;0);">0")
Em có làm trong file bài trên tại ô G1 rùi mà
Trường hợp dữ liệu đặc biệt thì mình mới nghĩ ra cách đặc biệt, còn không thì cứ theo cách tổng quát mà làm, như bài 15 chẳng hạn
Thử công thức này xem sao:
Đừng quên Ctrl + Shift + Enter nhé