Nối dữ liệu theo điều kiện

  • Thread starter Thread starter snst
  • Ngày gửi Ngày gửi
Liên hệ QC

snst

Thành viên hoạt động
Tham gia
9/4/13
Bài viết
106
Được thích
3
Các anh chị giúp dùm em có hàm nào nối dữ liệu của cột A theo điều kiện cột B với. Em cảm ơn mọi người.
p/s: theo file dữ liệu kèm theo.
 

File đính kèm

Mọi người giúp em với em đang cần gấp quá.-0-/.
 
Các anh chị giúp dùm em có hàm nào nối dữ liệu của cột A theo điều kiện cột B với. Em cảm ơn mọi người.
p/s: theo file dữ liệu kèm theo.

Bài này không dễ ăn ngay cả làm bằng VBA
Tôi gửi bạn 1 cách làm:
1> Đầu tiên chèn code này vào 1 module
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
(code nối chuỗi theo điều kiện)
2> Tiếp theo ra ngoài bảng tính, gõ vào cell C2 công thức:
Mã:
=IF(B2="","",JoinText(", ",OFFSET(A2,,,IFERROR(MATCH(FALSE,ISBLANK(B3:$B$14),0),1))))
Bấm Ctrl + Shift + Enter để kết thúc
 

File đính kèm

Cảm ơn các anh đã giúp đỡ. để em thử cách của anh ndu96081631 thử..hic
 
Cảm ơn anh ndu96081631 nhiều ạ. chúc anh sức khỏe, thành công trong cuộc sống.
sao nó báo lỗi này anh. #NAME?.
 
Lần chỉnh sửa cuối:
@ snst:
Mã:
Sub snst()
Dim tmp As Variant, r As Long, lr As Long, KQ() As String, T As String, i As Long, j As Long
tmp = Sheet1.Range("A2:B" & Sheet1.Range("A65000").End(xlUp).Row).Value
lr = UBound(tmp, 1)
ReDim KQ(1 To lr, 1 To 1)
For j = 1 To lr
    If tmp(j, 2) <> "" Then
        i = j
        For r = j To lr - 1
            T = T & tmp(r, 1) & ", "
            If tmp(r + 1, 2) <> "" Then KQ(i, 1) = Left(T, Len(T) - 2): T = "": i = r + 1
        Next r
    Exit For
    End If
Next j
If tmp(lr, 2) <> "" Then KQ(lr, 1) = tmp(lr, 1)
Sheet1.Range("D2").Resize(1000, 1).ClearContents
Sheet1.Range("D2").Resize(lr, 1).Value = KQ
End Sub
 
bạn dùng hàm tự tạo
Mã:
Function JoinDL(ByVal Delimiter As String, Rng1 As Range, Rng2 As Range) As String
If Rng2(1, 1).Value = "" Then Exit Function
Dim i As Integer
JoinDL = Rng1(1, 1)
For i = 2 To Rng1.Rows.Count
    If Rng1(i, 1) <> "" And Rng2(i, 1) = "" Then
        JoinDL = JoinDL & Delimiter & Rng1(i, 1)
    Else
        Exit Function
    End If
Next
End Function
công thức ô C2
Mã:
=JoinDL(", ",A2:$A$13,B2:$B$13)
copy xuống
 
Web KT

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

Back
Top Bottom