Lấy ra nhiều giá trị trùng từ 1 mảng (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

MrKhoa3108

Thành viên mới
Tham gia
22/10/13
Bài viết
25
Được thích
4
Dear Anh/Chị diễn đàn,
Hiện tại e có file đính kèm, em chưa nghĩ ra cách nào để lấy từ 3 giá trị trùng trở lên ra từng cell tương ứng.
Với 2 giá trị trùng thì vloopup được và lấy được mà từ 3 trở lên em chưa có cách nào. Anh/Chị nào biết chỉ giúp em với ạ.
Pic minh họa như file :
218106
 

File đính kèm

Dear Anh/Chị diễn đàn,
Hiện tại e có file đính kèm, em chưa nghĩ ra cách nào để lấy từ 3 giá trị trùng trở lên ra từng cell tương ứng.
Với 2 giá trị trùng thì vloopup được và lấy được mà từ 3 trở lên em chưa có cách nào. Anh/Chị nào biết chỉ giúp em với ạ.
Pic minh họa như file :
View attachment 218106
Công thức
Mã:
E19=IFERROR(INDEX($B$3:$B$17,AGGREGATE(15,6,ROW($1:$15)/($A$3:$A$17=$D19)/(COUNTIF(OFFSET($B$2,,ROW($1:$15)),$B$3:$B$17)=0),COLUMN(A$1))),"")
 
Em cảm ơn nhiều, Nó rất đúng với cái mảng e làm mẫu.
Mà em làm thật với cái giá trị nhiều hơn nó lại không được, cứu em
Mã:
=IFERROR(INDEX($B$3:$B$12542,AGGREGATE(15,6,ROW($1:$12542)/($A$3:$A$12542=$F3)/(COUNTIF(OFFSET($B$3,,ROW($1:$12542)),$B$3:$B$12542)=0),COLUMN(A$1))),"")
 

File đính kèm

Dear Anh/Chị diễn đàn,
Hiện tại e có file đính kèm, em chưa nghĩ ra cách nào để lấy từ 3 giá trị trùng trở lên ra từng cell tương ứng.
Với 2 giá trị trùng thì vloopup được và lấy được mà từ 3 trở lên em chưa có cách nào. Anh/Chị nào biết chỉ giúp em với ạ.
Pic minh họa như file :
View attachment 218106
Thử công thức này
Mã:
E19=IFERROR(INDEX($B$3:$B$17,AGGREGATE(15,6,ROW($1:$15)/($A$3:$A$17=$D19),COLUMN(A1))),"")
 
Em cảm ơn nhiều, Nó rất đúng với cái mảng e làm mẫu.
Mà em làm thật với cái giá trị nhiều hơn nó lại không được, cứu em
Mã:
=IFERROR(INDEX($B$3:$B$12542,AGGREGATE(15,6,ROW($1:$12542)/($A$3:$A$12542=$F3)/(COUNTIF(OFFSET($B$3,,ROW($1:$12542)),$B$3:$B$12542)=0),COLUMN(A$1))),"")
Eo ơi dữ liệu lên tới 12000 dòng, dùng công thức mảng ko ổn đâu, bạn nên dùng VBA hoặc thử dùng Pivot theo file đính kèm
 

File đính kèm

Thanks @hocexcel_1991 nhiều nhé, Hi vọng có 1 cao nhân thất lạc vào đây cho em xin 1 đoạn code.
 
Cảm ơn @hocexcel_1991 nhiều nhé, Hi vọng có 1 cao nhân thất lạc vào đây cho em xin 1 đoạn code.
Bạn muốn liệt kê tất cả hay chỉ liệt kê thời gian các mã bị trùng
Nói nhỏ nhé, sửa chữ "cao nhân" đi sẽ có nhiều bạn...."thất lạc" vào đây
Mà sao lại là "thất lạc" nhỉ?
Thân
 
Hứng lên làm chơi, thử, enter không được thì ctrl+shift+enter.
Mã:
=IFERROR(VLOOKUP($D19,INDEX($A$3:$B$17,MATCH($D19,$A$3:$A$17,0)+COLUMN(A1)-1,),2,0),"")
 
Lần chỉnh sửa cuối:
Dear Anh/Chị diễn đàn,
Hiện tại e có file đính kèm, em chưa nghĩ ra cách nào để lấy từ 3 giá trị trùng trở lên ra từng cell tương ứng.
Với 2 giá trị trùng thì vloopup được và lấy được mà từ 3 trở lên em chưa có cách nào. Anh/Chị nào biết chỉ giúp em với ạ.
Pic minh họa như file :
View attachment 218106
Em góp vui tí cho xôm cửa xôm nhà!
 

File đính kèm

Lang thang đến đây lúc rỗi & viết macro này:
PHP:
Sub ThietLapLaiDanhSach()
Dim Rws As Long, J As Long, W As Integer, Dm As Integer
Dim Arr()
LapDSDN
With Sheet1
    Rws = [B2].CurrentRegion.Rows.Count
    Arr() = [A3].Resize(Rws, 2).Value
    For Dm = 3 To [D2].End(xlDown).Row
        ReDim dArr(1 To 1, 1 To Rws) As String
        .Cells(Dm, "E").Resize(, Rws).Value = dArr()
        For J = 1 To UBound(Arr())
            If Arr(J, 1) = .Cells(Dm, "D").Value Then
                W = W + 1:                                   dArr(1, W) = Arr(J, 2)
            End If
        Next J
        If W Then
            .Cells(Dm, "E").Resize(, W).Value = dArr():     W = 0
        End If
    Next Dm
End With
End Sub
Mã:
Sub LapDSDN()
Dim Rws As Long
With Sheet1
    Rws = .[A2].CurrentRegion.Rows.Count
    .Range("A2").Resize(Rws).Copy Destination:=[D2]
    Application.CutCopyMode = False
    .Range("$D$2").Resize(Rws).RemoveDuplicates Columns:=1, Header:=xlYes
End With
End Sub

Nói thêm: Mình trước đây cao nhất chỉ mét sáu lăm hà, giờ không tới
 
Lần chỉnh sửa cuối:
Hứng lên làm chơi, thử, enter không được thì ctrl+shift+enter.
Mã:
=IFERROR(VLOOKUP($D19,INDEX($A$3:$B$17,MATCH($D19,$A$3:$A$17,0)+COLUMN(A1)-1,),2,0),"")
Bác làm vậy khi gặp trường hợp các mã trùng không liên tiếp nhau thì không xài được dzồi _)()(-
 
Dear Anh/Chị diễn đàn,
Hiện tại e có file đính kèm, em chưa nghĩ ra cách nào để lấy từ 3 giá trị trùng trở lên ra từng cell tương ứng.
Với 2 giá trị trùng thì vloopup được và lấy được mà từ 3 trở lên em chưa có cách nào. Anh/Chị nào biết chỉ giúp em với ạ.
Pic minh họa như file :
View attachment 218106
Góp vui!!!
Mã:
Sub xuat()
  Set d2 = CreateObject("Scripting.Dictionary")
  Set d3 = CreateObject("Scripting.Dictionary")
  a = Range("A3:B" & [A65000].End(xlUp).Row)
  For i = LBound(a) To UBound(a)
    If Not d2.exists(a(i, 1)) Then d2(a(i, 1)) = d2.Count + 1
    d3(a(i, 1)) = d3(a(i, 1)) + 1
  Next i
  mx = Application.Max(d3.items)
  Dim TblD(): ReDim TblD(1 To d2.Count, 1 To mx + 1)
  Set d3 = CreateObject("Scripting.Dictionary")
  For i = LBound(a) To UBound(a)
      d3(a(i, 1)) = d3(a(i, 1)) + 1
      TblD(d2(a(i, 1)), 1) = a(i, 1)
      TblD(d2(a(i, 1)), d3(a(i, 1)) + 1) = a(i, 2)
   Next
   Range("d3").Resize(d2.Count, mx + 1) = TblD
 End Sub
 

File đính kèm

Góp vui!!!
Mã:
Sub xuat()
  Set d2 = CreateObject("Scripting.Dictionary")
  Set d3 = CreateObject("Scripting.Dictionary")
  a = Range("A3:B" & [A65000].End(xlUp).Row)
  For i = LBound(a) To UBound(a)
    If Not d2.exists(a(i, 1)) Then d2(a(i, 1)) = d2.Count + 1
    d3(a(i, 1)) = d3(a(i, 1)) + 1
  Next i
  mx = Application.Max(d3.items)
  Dim TblD(): ReDim TblD(1 To d2.Count, 1 To mx + 1)
  Set d3 = CreateObject("Scripting.Dictionary")
  For i = LBound(a) To UBound(a)
      d3(a(i, 1)) = d3(a(i, 1)) + 1
      TblD(d2(a(i, 1)), 1) = a(i, 1)
      TblD(d2(a(i, 1)), d3(a(i, 1)) + 1) = a(i, 2)
   Next
   Range("d3").Resize(d2.Count, mx + 1) = TblD
End Sub
Cảm ơn cao nhân
 
Cảm ơn bạn @chiendich ! Ngoài sự mong đợi cho cái code dễ hiểu và dùng phát ngon luôn
Bài đã được tự động gộp:

Ai đó sửa lại tiêu đề đi...

Đọc rụt cả lưỡi cũng không đọc được.

View attachment 218182
Em ngàn lần xin lỗi, do bối rối quá viết còn sai chính tả hehe.
Bài đã được tự động gộp:

Lang thang đến đây lúc rỗi & viết macro này:
PHP:
Sub ThietLapLaiDanhSach()
Dim Rws As Long, J As Long, W As Integer, Dm As Integer
Dim Arr()
LapDSDN
With Sheet1
    Rws = [B2].CurrentRegion.Rows.Count
    Arr() = [A3].Resize(Rws, 2).Value
    For Dm = 3 To [D2].End(xlDown).Row
        ReDim dArr(1 To 1, 1 To Rws) As String
        .Cells(Dm, "E").Resize(, Rws).Value = dArr()
        For J = 1 To UBound(Arr())
            If Arr(J, 1) = .Cells(Dm, "D").Value Then
                W = W + 1:                                   dArr(1, W) = Arr(J, 2)
            End If
        Next J
        If W Then
            .Cells(Dm, "E").Resize(, W).Value = dArr():     W = 0
        End If
    Next Dm
End With
End Sub
Mã:
Sub LapDSDN()
Dim Rws As Long
With Sheet1
    Rws = .[A2].CurrentRegion.Rows.Count
    .Range("A2").Resize(Rws).Copy Destination:=[D2]
    Application.CutCopyMode = False
    .Range("$D$2").Resize(Rws).RemoveDuplicates Columns:=1, Header:=xlYes
End With
End Sub

Nói thêm: Mình trước đây cao nhất chỉ mét sáu lăm hà, giờ không tới
E đã test rất là OK- cảm ơn thất lạc đại ca
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom