Xin công thức VBA hàm tìm kiếm và lấy giá trị

Liên hệ QC

nvh611

Thành viên thường trực
Tham gia
20/5/17
Bài viết
228
Được thích
42
Nhờ các bạn trên GPE viết giúp hàm như nội dung file đính kèm
Cảm ơn các bạn!
 

File đính kèm

  • hàm tìm giá trị.xlsm
    9.3 KB · Đọc: 19
Hàm Chỉ không xét cột điều kiện trống, còn vùng điều kiện trống vẫn xét mờ. Hay là bạn có ý khác? nhập tay kết quả gởi lên
Bạn ơi, Nếu ô dữ liệu trống thì coi như không có dữ liệu
Nên trong trường hợp này thì bỏ qua và không lấy kết quả bạn à
Bạn @HieuCD thêm điều kiện loại bỏ giúp mình với nhé
 
Upvote 0
Bạn ơi, Nếu ô dữ liệu trống thì coi như không có dữ liệu
Nên trong trường hợp này thì bỏ qua và không lấy kết quả bạn à
Bạn @HieuCD thêm điều kiện loại bỏ giúp mình với nhé
Vấn đề là lấy thuận và nghịch. Nhập tay kết quả như thế nào mới tính tiếp
 
Upvote 0
Thêm tùy biến kết quả thích thì dùng
Mã:
Function JoinIfArr(ByVal VungDk As Range, ByVal DieuKien As Range, ByVal KetQua As Range, Optional ByVal TypeCond As Boolean = True, Optional ByVal TypeRes As Boolean = True) As Variant
  'TypeCond = False: Xet dieu kien nguoc lai
  'TypeRes = False: Tra ket qua nguoc lai
  Dim blArr() As Boolean, Res As String, tmp, dk As Boolean
  Dim i As Long, j As Byte, sRow As Long, sCol As Byte, k As Byte
  sRow = VungDk.Rows.Count
  sCol = VungDk.Columns.Count
  If DieuKien.Rows.Count <> sRow Or KetQua.Columns.Count <> sCol Then
    JoinIfArr = CVErr(xlErrRef): Exit Function
  End If
  JoinIfArr = ""
 
  If Len(DieuKien(sRow, 1).Value) = 0 Then Exit Function
  ReDim blArr(1 To sCol)
  For i = 1 To sRow
    tmp = DieuKien(i, 1).Value
    If Len(tmp) > 0 Then
      For j = 1 To sCol
        If blArr(j) = False Then
          If (InStr(1, VungDk(i, j).Value, tmp) = 0) = TypeCond Or Len(VungDk(i, j).Value) = 0 Then
            k = k + 1: blArr(j) = True
          End If
        End If
      Next j
      If k = sCol Then Exit For
    End If
  Next i
 
  For j = 1 To sCol
    If (blArr(j) = False) = TypeRes Then
      If Len(Res) = 0 Then Res = KetQua(1, j) Else Res = Res & "-" & KetQua(1, j) '--------True;False
    End If
  Next j

  JoinIfArr = Res
  Set vDieuKien = Nothing: Set DieuKien = Nothing: Set KetQua = Nothing
End Function
 

File đính kèm

  • hàm tìm giá trị (1) (1) (4).xlsm
    16.7 KB · Đọc: 10
Upvote 0
Thêm tùy biến kết quả thích thì dùng
Mã:
Function JoinIfArr(ByVal VungDk As Range, ByVal DieuKien As Range, ByVal KetQua As Range, Optional ByVal TypeCond As Boolean = True, Optional ByVal TypeRes As Boolean = True) As Variant
  'TypeCond = False: Xet dieu kien nguoc lai
  'TypeRes = False: Tra ket qua nguoc lai
  Dim blArr() As Boolean, Res As String, tmp, dk As Boolean
  Dim i As Long, j As Byte, sRow As Long, sCol As Byte, k As Byte
  sRow = VungDk.Rows.Count
  sCol = VungDk.Columns.Count
  If DieuKien.Rows.Count <> sRow Or KetQua.Columns.Count <> sCol Then
    JoinIfArr = CVErr(xlErrRef): Exit Function
  End If
  JoinIfArr = ""

  If Len(DieuKien(sRow, 1).Value) = 0 Then Exit Function
  ReDim blArr(1 To sCol)
  For i = 1 To sRow
    tmp = DieuKien(i, 1).Value
    If Len(tmp) > 0 Then
      For j = 1 To sCol
        If blArr(j) = False Then
          If (InStr(1, VungDk(i, j).Value, tmp) = 0) = TypeCond Or Len(VungDk(i, j).Value) = 0 Then
            k = k + 1: blArr(j) = True
          End If
        End If
      Next j
      If k = sCol Then Exit For
    End If
  Next i

  For j = 1 To sCol
    If (blArr(j) = False) = TypeRes Then
      If Len(Res) = 0 Then Res = KetQua(1, j) Else Res = Res & "-" & KetQua(1, j) '--------True;False
    End If
  Next j

  JoinIfArr = Res
  Set vDieuKien = Nothing: Set DieuKien = Nothing: Set KetQua = Nothing
End Function
Trời!
Hàm của bạn @HieuCD quá vĩ đại và rất nhiều tác dụng
Tôi thử thấy rất đúng cho cả 2 trường hợp rồi
Cảm ơn bạn @HieuCD rất nhiều
Bạn làm ơn giải thích thêm cách dùng tỷ mỷ hơn được không?
 
Upvote 0
Trời!
Hàm của bạn @HieuCD quá vĩ đại và rất nhiều tác dụng
Tôi thử thấy rất đúng cho cả 2 trường hợp rồi
Cảm ơn bạn @HieuCD rất nhiều
Bạn làm ơn giải thích thêm cách dùng tỷ mỷ hơn được không?
Bạn thử thay giá trị 2 tham số cuối True và False từ đó suy ra tác dụng của hàm
 
Upvote 0
Web KT
Back
Top Bottom