Gôp chuỗi

Liên hệ QC

Ngan Tuan

Thành viên mới
Tham gia
8/6/10
Bài viết
21
Được thích
2
Rất mong mọi người giúp đỡ, cách lập công thức gộp tên của nhiều người ở nhiều ô vào một ô khi ta chọn x vào ô tương ứng tên người đó
 

File đính kèm

Rất mong mọi người giúp đỡ, cách lập công thức gộp tên của nhiều người ở nhiều ô vào một ô khi ta chọn x vào ô tương ứng tên người đó
Dùng VBA nha bạn
Mã:
Function JoinText(ByVal Delimiter As String, 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
      If TypeName(Item) <> "Error" Then
        tmp = CStr(Item)
        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
Công thức gõ trên sheet chỉ là:
Mã:
=JoinText(", ", IF(C2:D5="x",B2:B5,1/0))
Bấm Ctrl + Shift + Enter
Xem file
 

File đính kèm

Rất cảm ơn anh. Tuy nhiên em muốn kết quả cho ra giống như cột C6 và D6, nghĩa là khi tích chọn người nào thì kết quả sẽ gộp lại những người đó và có thể copy để áp dung cho các cột E6, F6...,
Rất mong các anh chị chỉ giúp.
 

File đính kèm

Rất cảm ơn anh. Tuy nhiên em muốn kết quả cho ra giống như cột C6 và D6, nghĩa là khi tích chọn người nào thì kết quả sẽ gộp lại những người đó và có thể copy để áp dung cho các cột E6, F6...,
Rất mong các anh chị chỉ giúp.
Sửa lại vậy
Mã:
=JoinText(", ",IF(C2:C5="x",$B$2:$B$5,1/0))
nhấn CSE
1576806513499.png
 
Sao vẫn chưa áp dụng đc bạn ơi. Vì khi bỏ dấu x ở một dòng thì tên người đó không mất đi.
Nghĩa là nếu chọn x hết thì cho ra kết quả: Nguyen Van A.....Nguyen Van T; nếu bỏ x ở cột ong Nguyen Van T thì phải cho ra kết quả chỉ cong lại 3 người thôi mới đúng. Mong đc chỉ giúp
 
Sao vẫn chưa áp dụng đc bạn ơi. Vì khi bỏ dấu x ở một dòng thì tên người đó không mất đi.
Nghĩa là nếu chọn x hết thì cho ra kết quả: Nguyen Van A.....Nguyen Van T; nếu bỏ x ở cột ong Nguyen Van T thì phải cho ra kết quả chỉ cong lại 3 người thôi mới đúng. Mong đc chỉ giúp
Bạn tải file bài #2, trong đó có code nên phải lưu .xls, .xlsm, .xlsb mới sử dụng được
 
Sao vẫn chưa áp dụng đc bạn ơi. Vì khi bỏ dấu x ở một dòng thì tên người đó không mất đi.
Đoán 99.9% là bạn chưa từng dùng VBA bao giờ???
Tình trạng của bạn rất có khả năng là chưa Enable macro nên code chưa có tác dụng
 
- Công thức cho Excel 2016+ hoặc 365:
=textjoin(", ", true, if(c2:c5="x",b2:b5,""))
Kết thúc bằng ctrl - shift - enter
- Công thức cho Excel 365 đã đăng ký office insider
=textjoin(", ",true, filter(b2:b5,c2:c5="x"))
Kết thúc bằng enter
- Công thức cho Excel 2013 trở xuống thì cần dùng cột phụ rồi nối dần từ trên xuống.
- Mọi phiên bản thì có thể dùng vba như hàm của bác NDU.
 
Web KT

Bài viết mới nhất

Back
Top Bottom