tổng hợp dữ liệu còn thiếu vào 1 cột

Liên hệ QC

hoangminhtien

Thành viên gắn bó
Tham gia
29/2/08
Bài viết
1,660
Được thích
2,190
Nghề nghiệp
Mechanical Engineering
em có bảng dữ liệu gồm các loại giấy tờ (a,b,c,d,e,f). nếu 1 người mà loại giấy tờ đấy có thì được đánh dấu "x", không có thì đánh số 0. em muốn có 1 cột thống kê xem người đó thiếu loại giấy tờ nào thì sẽ hiện ra trong cột này như file đính kèm. các bác xem rồi hướng dẫn em với nhé! cám ơn các bác
 

File đính kèm

  • Book2.xls
    13.5 KB · Đọc: 23
Chào bạn
Mã:
=IF(B3=0,$B$2,"")&" "&IF(C3=0,$C$2,"")&" "&IF(D3=0,$D$2,"")&" "&IF(E3=0,$E$2,"")&" "&IF(F3=0,$F$2,"")
Chúc thành công
 
Với dữ liệu chừng vài cột thì If & được, chứ còn vài chục thì mệt rồi. Không biết dữ liệu gốc của tác giả có bao nhiêu cột, nếu nhiều thì phải dùng VBA thôi.
 
Dữ liệu của em rất nhiều. Các bác giúp em làm nhé!
Bạn dùng hàm LookupS nha :
PHP:
Function LookupS(RngData As Range, Name) As String
Dim i As Long, j As Long
i = WorksheetFunction.Match(Name, RngData.Resize(, 1), 0)
j = RngData.Columns.Count
For j = 2 To j
    If RngData(i, j) = 0 Then LookupS = LookupS & RngData(1, j) & " "
Next
LookupS = Replace(Trim(LookupS), " ", ",")
End Function
 

File đính kèm

  • LookupS.xls
    24 KB · Đọc: 24
Thêm 1 cách làm bằng macro để tham khảo

PHP:
Option Explicit
Sub Thieu()
 Dim eRw As Long, jJ As Long, Col As Byte
 Dim Clls As Range, StrC As String
  
 eRw = [A65500].End(xlUp).Row:
 Cells(3, "P").Resize(eRw).ClearContents
 Col = [iV3].End(xlToLeft).Column - 1
 For jJ = 3 To eRw
   For Each Clls In Cells(jJ, "B").Resize(, Col)
      If Clls.Value = 0 Then StrC = StrC & ", " & Cells(2, Clls.Column).Value
   Next Clls
   If Len(StrC) > 0 Then
      Cells(jJ, "P").Value = Mid(StrC, 3):                        StrC = ""
   End If
 Next jJ
End Sub
 
Một UDF khác. Tùy biến hơn cho giá trị cần tìm (hiện tại theo yêu cầu của bạn là 0)
PHP:
Function MyVlookup(TD, BD As Range, DK)
    Set Rng = BD.Resize(, 1).Find(TD, LookAt:=xlWhole)
    If Not Rng Is Nothing Then
        For Each rng1 In Rng.Offset(, 1).Resize(, BD.Columns.Count - 1)
        If rng1 = DK Then
        MyVlookup = MyVlookup & rng1.Offset(-(rng1.Row - BD.Row)) & " "
        End If
        Next
        MyVlookup = Replace(Trim(MyVlookup), " ", ", ")
    End If
End Function
 

File đính kèm

  • MyVlookup.xls
    33.5 KB · Đọc: 17
Web KT
Back
Top Bottom