Hỏi cách trích xuất dữ liệu lặp (1 người xem)

Liên hệ QC

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

ZzTigerKingzZ

Thành viên mới
Tham gia
20/9/14
Bài viết
5
Được thích
1
Bạn nào giỏi Excel cho mình hỏi cái này cái.

Giả sử mình có 3 cột mỗi cột có 10 cái tên. tên ở mỗi cột có thể trùng nhau...
Mình muốn có được dữ liệu tên của những người xuất hiện trong cả 3 cột thì làm sao nhỉ?

mình đưa 1 file ví dụ lên ../-*+/

Làm sao để trích xuất ra được 2 cái tên như trong file VD là: Nguyễn Đức Minh, Phạm Thị Thùy Dung.

Nếu bạn nào giúp được mình, mình sẽ hậu tạ 1 card ĐT 20k -\\/.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn nào giỏi Excel cho mình hỏi cái này cái.

Giả sử mình có 3 cột mỗi cột có 10 cái tên. tên ở mỗi cột có thể trùng nhau...
Mình muốn có được dữ liệu tên của những người xuất hiện trong cả 3 cột thì làm sao nhỉ?

mình đưa 1 file ví dụ lên ../-*+/

Làm sao để trích xuất ra được 2 cái tên như trong file VD là: Nguyễn Đức Minh, Phạm Thị Thùy Dung.
Có lẽ là không cần viết đến chữ hậu tạ
Đầu bài thì đã biết nhưng bạn định trích xuất ra đâu, hãy cho ví dụ
 
Nếu dùng công thức thì thử cái này
---------------
Nhập công thức và kết thúc bằng ctrl+shift+enter
 

File đính kèm

Bạn nào giỏi Excel cho mình hỏi cái này cái.

Giả sử mình có 3 cột mỗi cột có 10 cái tên. tên ở mỗi cột có thể trùng nhau...
Mình muốn có được dữ liệu tên của những người xuất hiện trong cả 3 cột thì làm sao nhỉ?

mình đưa 1 file ví dụ lên ../-*+/

Làm sao để trích xuất ra được 2 cái tên như trong file VD là: Nguyễn Đức Minh, Phạm Thị Thùy Dung.
Nếu dữ liệu nhiều thì bạn có thể dụng code này để tăng tốc độ tính toán cho bảng tính nhé :
PHP:
Public Sub TrungBaCot()
    Dim sArr, dArr, Kq
    Dim i As Long, j As Long, k As Long, m As Long, kK As Long
    Dim Dic
 
    Set Dic = CreateObject("scripting.dictionary")
    sArr = Sheets("sheet1").Range("C6:E50000")
    
'Thiet lap danh sach duy nhat cho cot 1, va luu thong tin vao dArr
    ReDim dArr(1 To UBound(sArr), 1 To 2)
    j = 1
    For i = 1 To UBound(sArr)
                    If sArr(i, j) <> "" Then
                        If Not Dic.exists(sArr(i, j)) Then
                            k = k + 1
                            Dic.Add sArr(i, j), k
                            dArr(k, 1) = sArr(i, j): dArr(k, 2) = 1
                        End If
                    End If
    Next i

' lap cho tung cot, neu thay co trong Dic thi tang bien dem dArr(..., 2) len 1 -- luu so lan xuat hien them trong cot j

    For j = 2 To 3
            For i = 1 To UBound(sArr)
                     If sArr(i, j) <> "" Then
                            If Dic.exists(sArr(i, j)) Then
                                kK = Dic.Item(sArr(i, j))
                                dArr(kK, 2) = dArr(kK, 2) + 1
                            End If
                     End If
            Next i
    Next j
       
'lay ket qua tu nhung phan tu co dArr(...,2)>=3  tuc la xuat hien o ca 3 cot

    ReDim Kq(1 To UBound(dArr), 1 To 1)
    For i = 1 To k
                    If dArr(i, 2) >= 3 Then
                        m = m + 1
                        Kq(m, 1) = dArr(i, 1)
                    End If
    Next i
                
    With Sheets("Sheet1")
        .[H6:H5000].ClearContents
        .[H6].Resize(m, 1) = Kq
    End With

End Sub
 
Lần chỉnh sửa cuối:
góp thêm một cthuc
Mã:
G14=LOOKUP(2,1/(COUNTIF(OFFSET($C$6:$C$11,,,,3),$C$6:$C$11)=3)/(COUNTIF($G$13:G13,$C$6:$C$11)=0),$C$6:$C$11)
kéo xuống

cái này chắc xài advanced filter được
Em thử bon chen dùng AF xem sao, nếu thế phải đưa các cột về thành 1 cột, với điều kiện lọc là:
Mã:
=COUNTIF($C$6:$C6,$C6)>=3
[GPECODE=vb]Sub Loc3Cot()
With Sheet1
.[C5:C23].AdvancedFilter 2, .[I1:I2], .[G6]
End With
End Sub[/GPECODE]
P/S: cảm giác hơi BẤT AN
 

File đính kèm

Lần chỉnh sửa cuối:
Em thử bon chen dùng AF xem sao, nếu thế phải đưa các cột về thành 1 cột, với điều kiện lọc là:
Mã:
=COUNTIF($C$6:$C6,$C6)>=3
[GPECODE=vb]Sub Loc3Cot()
With Sheet1
.[C5:C23].AdvancedFilter 2, .[I1:I2], .[G6]
End With
End Sub[/GPECODE]
P/S: cảm giác hơi NÔNG DÂN

không ổn bạn ạ, vì người ta cần một cái tên xuất hiện trên 3 cột, bạn làm cách này, nếu có một cái tên xuất hiện trên một cột thôi nhưng 3 lần thì nó cũng lấy luôn (hình như là hàm tôi làm cũng vậy...hihihi)
============
với lại sao cái gì dở lại cho là nông dân vậy bạn
nông dân có những người chế tạo ra máy cắt lúa thậm chí máy bay, chưa kể họ làm những cải tiến trong công việc của họ để tăng năng suất, giảm sức lao động mà chúng ta có cái sp của họ để mà sử dụng. họ giỏi lắm đó bạn
 
không ổn bạn ạ, vì người ta cần một cái tên xuất hiện trên 3 cột, bạn làm cách này, nếu có một cái tên xuất hiện trên một cột thôi nhưng 3 lần thì nó cũng lấy luôn (hình như là hàm tôi làm cũng vậy...hihihi)
============
với lại sao cái gì dở lại cho là nông dân vậy bạn
nông dân có những người chế tạo ra máy cắt lúa thậm chí máy bay, chưa kể họ làm những cải tiến trong công việc của họ để tăng năng suất, giảm sức lao động mà chúng ta có cái sp của họ để mà sử dụng. họ giỏi lắm đó bạn
Cảm ơn bạn đã góp ý, sửa luôn, tôi cũng suy được tình huống đó, khả năng tên thành mã số thì chơi kiểu này mới ổn, hì
 
Em thử bon chen dùng AF xem sao, nếu thế phải đưa các cột về thành 1 cột, với điều kiện lọc là:
Mã:
=COUNTIF($C$6:$C6,$C6)>=3
[GPECODE=vb]Sub Loc3Cot()
With Sheet1
.[C5:C23].AdvancedFilter 2, .[I1:I2], .[G6]
End With
End Sub[/GPECODE]
P/S: cảm giác hơi BẤT AN

chế biến code bạn một chút
Mã:
Sub Loc3Cot()
[c5] = "cot1"
[j2] = "=countif($D$6:$D$11,$C6)>0"
[k2] = "=countif($e$6:$e$11,$C6)>0"
With Sheet1
    .[C5:C11].AdvancedFilter 2, .[j1:k2], .[h6]
End With
[j1:k2].Clear
End Sub
 
Nếu dùng công thức thì thử cái này
---------------
Nhập công thức và kết thúc bằng ctrl+shift+enter

=IF(COUNTIF($D$6:$D$11,C6)*COUNTIF($E$6:$E$11,C6)>0,C6,"") /-*+/

Công thức này tương đố ổn, không quá khủng khiếp. -0-/.
Mình có nhờ một ông anh bên IT, đoạn mã ổng viết cho mình ntn: =IF(OR(ISERROR(MATCH(C6,$D$6:$D$11,0)),ISERROR(MATCH(C6,$E$6:$E$11,0))),"",C6) -+*/-+*/-+*/

Ờm bạn gtri cho mình xin bản quyền cái lệnh này nhé.--=0
Ban gửi mình sđt đi, mình muốn hậu tạ. /-*+/
 
Ngoài lề 1 chút: Tinh thần của GPE là chia sẻ bạn ạ. Không ai lên đây để kiếm tiền đâu. Nếu bạn có lòng thì tham gia vào các hoạt động xã hội của GPE, như thế sẽ ý nghĩa hơn.
 
Chia sẽ thêm 1 công thức nữa
=IF(ISNA(VLOOKUP(C6;$D$6:$D$11;1;0));"";VLOOKUP(C6;$E$6:$E$11;1;0))

(sửa dấu chấm phẩy thành dấu phẩy nếu máy định dạng dấu phẩy)
 
Lần chỉnh sửa cuối:
=IF(COUNTIF($D$6:$D$11,C6)*COUNTIF($E$6:$E$11,C6)>0,C6,"") /-*+/

Công thức này tương đố ổn, không quá khủng khiếp. -0-/.
Mình có nhờ một ông anh bên IT, đoạn mã ổng viết cho mình ntn: =IF(OR(ISERROR(MATCH(C6,$D$6:$D$11,0)),ISERROR(MATCH(C6,$E$6:$E$11,0))),"",C6) -+*/-+*/-+*/

Ờm bạn gtri cho mình xin bản quyền cái lệnh này nhé.--=0
Ban gửi mình sđt đi, mình muốn hậu tạ. /-*+/
Chỉ là trao đổi kiến thức không cần thiết phải như vậy.
Thân!
 
Web KT

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

Back
Top Bottom