Tạo vòng lặp để kiểm tra giá trị 1 ô trong 1 vùng (1 người xem)

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

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

vst1986

Thành viên mới
Tham gia
10/12/09
Bài viết
8
Được thích
1
Cho giá trị là 1 số hoặc 1 chuỗi bất kỳ trong ô C3
Cho 1 vùng A4:A14

Viết hàm trong VBA (hàm sẽ đặt tại ô C15): Nếu giá trị trong ô C3 = với giá trị của 1 trong những ô từ A4->A14 thì hàm đó trả về giá trị của ô C3.

Mình không biết trong trường hợp này sử dụng vòng lặp nào! Các bạn giúp mình với nhé! tks!
 

File đính kèm

Cái này dùng công thức cũng được, bạn dùng VBA làm gì?
Công thức
Mã:
=IF(COUNTIF(A4:A14,C3),C3,"")
Còn muốn học VBA thì bạn tham khảo
Mã:
Function Compare(Rng As Range, Val As String)
Dim Arr, i As Long
Arr = Rng.Value
For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) = Val Then
        Compare = Val
    Else
        Compare = ""
    End If
Next
End Function
 
Upvote 0
Cái này dùng công thức cũng được, bạn dùng VBA làm gì?
Công thức
Mã:
=IF(COUNTIF(A4:A14,C3),C3,"")
Còn muốn học VBA thì bạn tham khảo
Mã:
Function Compare(Rng As Range, Val As String)
Dim Arr, i As Long
Arr = Rng.Value
For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) = Val Then
        Compare = Val
    Else
        Compare = ""
    End If
Next
End Function
Bạn ơi mình thử dùng hàm của bạn nhưng kết quả vẫn trả về ""
Mình đã dùng công thức để viết rồi nhưng khi chuyển sang hàm thì khó quá!
Mình muốn viết hàm để làm file excel nhẹ đi vì công việc mình làm cần phải dùng nhiều giá trị và nhiều vùng!

Không biết trong trường hợp này có dùng được vòng lặp For each không?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi mình thử dùng hàm của bạn nhưng kết quả vẫn trả về ""
Mình đã dùng công thức để viết rồi nhưng khi chuyển sang hàm thì khó quá!
Mình muốn viết hàm để làm file excel nhẹ đi vì công việc mình làm cần phải dùng nhiều giá trị và nhiều vùng!
- Bạn sử dụng có đúng cách không? Bạn Post File của bạn áp dụng Hàm tôi xem nhé.
Chú ý: cấu trúc hàm =Compare(Vùng điều kiện,điều kiện)
 
Upvote 0
Cho giá trị là 1 số hoặc 1 chuỗi bất kỳ trong ô C3
Cho 1 vùng A4:A14

Viết hàm trong VBA (hàm sẽ đặt tại ô C15): Nếu giá trị trong ô C3 = với giá trị của 1 trong những ô từ A4->A14 thì hàm đó trả về giá trị của ô C3.

Mình không biết trong trường hợp này sử dụng vòng lặp nào! Các bạn giúp mình với nhé! tks!

Bài này mắc mớ gì phải dùng vòng lặp chớ.
 

File đính kèm

Upvote 0
Cái này dùng công thức cũng được, bạn dùng VBA làm gì?
Công thức
Mã:
=IF(COUNTIF(A4:A14,C3),C3,"")
Còn muốn học VBA thì bạn tham khảo
Mã:
Function Compare(Rng As Range, Val As String)
Dim Arr, i As Long
Arr = Rng.Value
For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) = Val Then
        Compare = Val
    Else
        Compare = ""
    End If
Next
End Function
Hàm này thiếu Exit For rồi bạn ơi. Chắc chắn kết quả sẽ trả về ""
 
Upvote 0
Vâng đúng rùi thiếu Exit For, viết ohong test là sai luôn. Cảm ơn anh Hải nhé
Bạn sửa lại
Mã:
Function Compare(Rng As Range, Val As String)
Dim Arr, i As Long
Arr = Rng.Value
For i = 1 To UBound(Arr, 1)
    If Arr(i, 1) = Val Then
        Compare = Val
        Exit For
    Else
        Compare = ""
    End If
Next
End Function
Mà góp ý: bài này đâu cần UDF dùng hàm có sẵn cũng Ok, không phải hàm mảng thì chắc cũng không chậm được, còn nếu mà nhanh nữa nên dùng Sub bạn ah.
 
Upvote 0
Bài này mắc mớ gì phải dùng vòng lặp chớ.
Mình biết là như vậy!
Nhưng cái mình cần làm không cố định như sub của bạn. Bài mình đưa ra chỉ là 1 phần rất là nhỏ thôi. Dùng công thức thì có nhiều cách nhưng mình muốn viết hàm để làm giảm nhẹ dung lượng của file.

Rất cám ơn bạn đã đóng góp ý kiến, hy vọng được học hỏi nhiều về các cách vận dụng công thức trong excel. Nhiều công thức khác nhau có thể trả về 1 kết quả giống nhau.tks
 
Upvote 0
Web KT

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

Back
Top Bottom