Dùng hàm nào để dò tìm dữ liệu trùng?

Liên hệ QC

thuyduong1084

Thành viên mới
Tham gia
8/12/07
Bài viết
1
Được thích
0
Mình không biết dùng hàm nào:
VD:

hoa | 22
huong | 25
hoa | 25
huong | 21
Khi mình dùng hàm Vlookup thì giá trị chỉ có:

hoa | 22
huong | 25
hoa | 22
huong | 25
nó không đọc giá trị 25 va 21
Ai biết dùng hàm nào chỉ mình với
 
Chỉnh sửa lần cuối bởi điều hành viên:
Bạn cho ví dụ hàng cột cụ thể đi
VD
Cell A1 là gì
Cell B1 là gì...
 
Mình không biết dùng hàm nào:
VD:
hoa | 22
huong | 25
hoa | 25
huong | 21
Khi mình dùng hàm Vlookup thì giá trị chỉ có:
hoa | 22
huong | 25
hoa | 22
huong | 25
nó không đọc giá trị 25 va 21
Ai biết dùng hàm nào chỉ mình với

Mình hướng dẫn bạn hàm mảng tự tạo theo file của Thanh_TKS như sau:

(*) Bạn chép hàm này vô module 1

PHP:
Option Explicit:        Option Base 1
Function DVLOOKUP(Rng As Range, StrC As String)
 Dim Clls As Range, sRng As Range:        Dim Dem As Long
 ReDim MDL(Rng.Rows.Count, 2)
 
 Set sRng = Rng.Cells(1, 1).Resize(Rng.Rows.Count)
 For Each Clls In sRng
   If Clls.Value = StrC Then
      Dem = Dem + 1:    MDL(Dem, 1) = StrC
      MDL(Dem, 2) = Clls.Offset(, 1).Value
   End If
 Next Clls
 DVLOOKUP = MDL
End Function

(*) Bước tiếp theo, bạn quét chọn vùng 'K3:L6';
Bấm chuột lên thanh công thức & nhập vô đó cú pháp =DVLOOKUP(D3:E6,D3)
(Vùng D3:F6 chứa dữ liệu & D3 là chứa chuỗi tên - 'Hoa')

Kết thúc hàm bằng tổ hợp 3 phím mà ta đã biết

Mong rằng đã giúp ít nhiều cho bạn.
 
Tôi không biết tranh luận thế nào .Nhưng tôi thấy kỳ kỳ
Bây giờ bạn thử đặc lại dử liệu đi coi nó có kết quả không ?

Thanks.
 

File đính kèm

  • Copy of ABC-2.xls
    24 KB · Đọc: 109
Mình thấy các bạn dùng hàm Vlookup cho các số trùng như thế là không ổn rồi.
Nó chỉ cho ta 1 kết quả thôi.
Bạn dùng đoạn code này tìm thử xem (Mình tìm được trên diễn đàn đó)

Function TIM(CELLTIM, VUNG As Range, SOCOT As Long)
Dim rCell As Range, KQ
TIM = CVErr(xlErrNA)
For Each rCell In VUNG
If rCell = CELLTIM Then
KQ = KQ & "& " & rCell.Offset(, SOCOT - 1)
End If
Next rCell
If KQ <> "" Then
KQ = Right(KQ, Len(KQ) - 1)
TIM = KQ
End If
End Function
 
Mình không biết dùng hàm nào:
VD:

hoa | 22
huong | 25
hoa | 25
huong | 21
Khi mình dùng hàm Vlookup thì giá trị chỉ có:

hoa | 22
huong | 25
hoa | 22
huong | 25
nó không đọc giá trị 25 va 21
Ai biết dùng hàm nào chỉ mình với
Bạn tham khảo trong file nha.
Công thức của bạn thanh_tks sai về cơ bản. Công thức phải dựa vào điều kiện chứ. Công thức của bạn không đả động gì đến điều kiện cả. Kết quả đúng là do trật tự sắp xếp của dữ liệu đích giống với trật tự sắp xếp của dữ liệu nguồn. Thử đổi lại xem, kết quả sẽ không thay đổi do bạn không tham chiếu đến điều kiện ở vùng đích.
Dùng code trong trường hợp này thì hơi thừa.
 

File đính kèm

  • GPE.xls
    17.5 KB · Đọc: 172
Với dử liệu thế này mình thấy củng thấy ???
nếu thay đổi dử liệu nguồn là 3 tên hoa đi ,thì vùng trích ra bị lỗi liền .
Khi đó sang vùng lọc kết quả thêm một hoa nữa thì đúng .
Vậy copy =>Past đi ,có nhanh hơn không ?
Thuật toán giải bài này của Hữu Thắng rất tuyệt vời .
Thanks!
 
Cái này gây rất nhiều tranh cải.

Có cách là tuỳ từng trường hợp mà dùng thôi, theo tôi thì mình nên lấy tất cả giá trị sau khi thoả đk có ở bảng dữ liệu nguồn đưa vào 1 cell sau đó muốn lấy số lớn nhất hay nhỏ nhất, hay vừa gì đó thì tuỳ mình thôi.
 
Bạn nào thạo về hàm thì nên theo Công thức của HuuThang_bd. Còn nếu không thạo hoặc ngại thì tại bảng nguồn và bảng đích lập thêm cột phụ dùng hàm Countif và hàm & để chuyển thành tên hoa1, hoa2, Huong1, huong2... sau đó vùng hàm Vlookup bình thường (tôi không thạo hàm lắm nên thường làm theo cách này)

Xin lưu ý: Tôi không có ý bàn lùi mà chỉ là nêu thêm một cách làm cho những người chưa giỏi.
 
Lần chỉnh sửa cuối:
Như giới thiệu ở trên, mình sẽ lấy tất cả giá trị sau khi thỏa điều kiện vào 1 cell sau đó tùy trường hợp sử dụng mà bóc ra.

Bạn xem bài này: http://www.giaiphapexcel.com/forum/showpost.php?p=165376&postcount=3

Mã:
Function TIM(CELLTIM, VUNG As Range, SOCOT As Long)
Dim rCell As Range, KQ
    TIM = CVErr(xlErrNA)
      For Each rCell In VUNG
        If rCell = CELLTIM Then
            KQ = KQ & "& " & rCell.Offset(, SOCOT - 1)
        End If
    Next rCell
       If KQ <> "" Then
        KQ = Right(KQ, Len(KQ) - 1)
        TIM = KQ
    End If
End Function

Kết hợp với code của bạn huuthang_bd

Lấy giá trị lớn nhất trong chuổi:

Mã:
Function MaxValue(str As String)
MaxValue = Evaluate("=Max(" & Replace(str, "&", ",") & ")")
End Function
Lấy giá trị nhỏ nhất trong chuổi:

Mã:
Function MinValue(str As String)
MinValue = Evaluate("=min(" & Replace(str, "&", ",") & ")")
End Function

Bạn tham khảo thêm file đính kèm nhé.
Thân
 

File đính kèm

  • lookup.xls
    31.5 KB · Đọc: 91
Web KT
Back
Top Bottom