trích lọc dữ liệu theo điều kiện cách sử dụng như hàm Vlookup

Liên hệ QC

huonglien1901

GPE là ngôi nhà thứ 2 của tôi!!!
Tham gia
17/4/16
Bài viết
2,701
Được thích
2,434
Giới tính
Nam
Nghề nghiệp
Nhân viên kỹ thuật in ấn
Em chào mọi người!

Em có vấn đề nhờ mọi người hỗ trợ.

Em muốn trích lọc dữ liệu dựa vào điều kiện mã hàng

em có sử dụng code nhưng nó báo lỗi ở dòng này!
PHP:
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
PHP:
Option Explicit
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
Dim wks As Worksheet, SrcRng As Range, sArray
  Dim LR As Long, i As Long, n As Long, tmp
  Dim TenFileDuongDan As String
TenFileDuongDan = ThisWorkbook.Path & "\Data.xlsx"
  On Error Resume Next
With CreateObject("ADODB.Connection")
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
  Set SrcRng = Sheets("DATA_SP").Range("A2:D60000")
  sArray = SrcRng.Value
  ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(sArray, 1)
    If CStr(sArray(i, 1)) <> "" Then
      tmp = sArray(i, 1)
      If Not Dic.exists(tmp) Then
        LR = LR + 1
        Dic.Add tmp, LR
        aResult(LR, 1) = tmp
        aResult(LR, 2) = sArray(i, 2) 'TEN SAN PHAM
        aResult(LR, 3) = sArray(i, 3) 'NGANH HANG
        aResult(LR, 4) = sArray(i, 4) 'HANG
      End If
    End If
  Next
End With
End Sub
Em nhờ mọi người hỗ trợ.
Khi em chạy code thì nó không hoạt động!

Em cảm ơn mọi người nhiều!
 

File đính kèm

Em chào mọi người!

Em có vấn đề nhờ mọi người hỗ trợ.

Em muốn trích lọc dữ liệu dựa vào điều kiện mã hàng

em có sử dụng code nhưng nó báo lỗi ở dòng này!
PHP:
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
PHP:
Option Explicit
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
Dim wks As Worksheet, SrcRng As Range, sArray
  Dim LR As Long, i As Long, n As Long, tmp
  Dim TenFileDuongDan As String
TenFileDuongDan = ThisWorkbook.Path & "\Data.xlsx"
  On Error Resume Next
With CreateObject("ADODB.Connection")
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
  Set SrcRng = Sheets("DATA_SP").Range("A2:D60000")
  sArray = SrcRng.Value
  ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(sArray, 1)
    If CStr(sArray(i, 1)) <> "" Then
      tmp = sArray(i, 1)
      If Not Dic.exists(tmp) Then
        LR = LR + 1
        Dic.Add tmp, LR
        aResult(LR, 1) = tmp
        aResult(LR, 2) = sArray(i, 2) 'TEN SAN PHAM
        aResult(LR, 3) = sArray(i, 3) 'NGANH HANG
        aResult(LR, 4) = sArray(i, 4) 'HANG
      End If
    End If
  Next
End With
End Sub
Em nhờ mọi người hỗ trợ.
Khi em chạy code thì nó không hoạt động!

Em cảm ơn mọi người nhiều!

Code này code tác dụng gì vậy bạn, nhìn code đấy nếu không lỗi thì cũng chỉ ghi dữ liệu vào mảng rồi không để làm gì cả thì phải?
 
Upvote 0
Em chào mọi người!

Em có vấn đề nhờ mọi người hỗ trợ.

Em muốn trích lọc dữ liệu dựa vào điều kiện mã hàng

em có sử dụng code nhưng nó báo lỗi ở dòng này!
PHP:
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
PHP:
Option Explicit
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
Dim wks As Worksheet, SrcRng As Range, sArray
  Dim LR As Long, i As Long, n As Long, tmp
  Dim TenFileDuongDan As String
TenFileDuongDan = ThisWorkbook.Path & "\Data.xlsx"
  On Error Resume Next
With CreateObject("ADODB.Connection")
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & TenFileDuongDan & ";" & "Extended Properties=""Excel 8.0;HDR=No &"""
  Set SrcRng = Sheets("DATA_SP").Range("A2:D60000")
  sArray = SrcRng.Value
  ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
  Set Dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(sArray, 1)
    If CStr(sArray(i, 1)) <> "" Then
      tmp = sArray(i, 1)
      If Not Dic.exists(tmp) Then
        LR = LR + 1
        Dic.Add tmp, LR
        aResult(LR, 1) = tmp
        aResult(LR, 2) = sArray(i, 2) 'TEN SAN PHAM
        aResult(LR, 3) = sArray(i, 3) 'NGANH HANG
        aResult(LR, 4) = sArray(i, 4) 'HANG
      End If
    End If
  Next
End With
End Sub
Em nhờ mọi người hỗ trợ.
Khi em chạy code thì nó không hoạt động!

Em cảm ơn mọi người nhiều!
Sửa lại đường dẫn DATA__SP.xlsx
Bài đã được tự động gộp:

Code này code tác dụng gì vậy bạn, nhìn code đấy nếu không lỗi thì cũng chỉ ghi dữ liệu vào mảng rồi không để làm gì cả thì phải?
Cái này là lấy dữ liệu vlookup dữ liệu file đóng đó chị
 
Upvote 0
Sửa lại đường dẫn DATA__SP.xlsx
Bài đã được tự động gộp:


Cái này là lấy dữ liệu vlookup dữ liệu file đóng đó chị
Sửa lại mỗi chỗ đó chắc gì đã được ạ, hình như phải sửa lại cả câu lệnh "connection string" và những chỗ khác. ADO mình cũng không rõ.
 
Upvote 0
OT thử VBA kết nối ngon lành nhưng không thấy hiệu ứng kết quả trả về đâu cả. @@!
Mã:
Option Explicit
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
    Dim wks As Worksheet, SrcRng As Range, sArray
    Dim LR As Long, i As Long, n As Long, tmp
    Dim TenFileDuongDan As String, destWB As Workbook, fileName As String
    fileName = "DATA_SP.xlsx"
    TenFileDuongDan = ThisWorkbook.Path & "\" & fileName
    'On Error Resume Next
    If bIsBookOpen(fileName) Then
        Set destWB = Workbooks(fileName)
    Else
        Set destWB = Workbooks.Open(TenFileDuongDan)
    End If
    Set SrcRng = destWB.Sheets("DATA_SP").Range("A2:D60000")
    sArray = SrcRng.Value
    ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(sArray, 1)
      If CStr(sArray(i, 1)) <> "" Then
        tmp = sArray(i, 1)
        If Not Dic.exists(tmp) Then
          LR = LR + 1
          Dic.Add tmp, LR
          aResult(LR, 1) = tmp
          aResult(LR, 2) = sArray(i, 2) 'TEN SAN PHAM
          aResult(LR, 3) = sArray(i, 3) 'NGANH HANG
          aResult(LR, 4) = sArray(i, 4) 'HANG
        End If
      End If
    Next
    destWB.Close False
End Sub
Function bIsBookOpen(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen = Not (Application.Workbooks(szBookName) Is Nothing)
End Function
 
Upvote 0
OT thử VBA kết nối ngon lành nhưng không thấy hiệu ứng kết quả trả về đâu cả. @@!
Mã:
Option Explicit
Public Chk As Boolean, Dic As Object, aResult()
Sub Vlookup_DATA_SP()
    Dim wks As Worksheet, SrcRng As Range, sArray
    Dim LR As Long, i As Long, n As Long, tmp
    Dim TenFileDuongDan As String, destWB As Workbook, fileName As String
    fileName = "DATA_SP.xlsx"
    TenFileDuongDan = ThisWorkbook.Path & "\" & fileName
    'On Error Resume Next
    If bIsBookOpen(fileName) Then
        Set destWB = Workbooks(fileName)
    Else
        Set destWB = Workbooks.Open(TenFileDuongDan)
    End If
    Set SrcRng = destWB.Sheets("DATA_SP").Range("A2:D60000")
    sArray = SrcRng.Value
    ReDim aResult(1 To UBound(sArray, 1), 1 To UBound(sArray, 2))
    Set Dic = CreateObject("Scripting.Dictionary")
    For i = 1 To UBound(sArray, 1)
      If CStr(sArray(i, 1)) <> "" Then
        tmp = sArray(i, 1)
        If Not Dic.exists(tmp) Then
          LR = LR + 1
          Dic.Add tmp, LR
          aResult(LR, 1) = tmp
          aResult(LR, 2) = sArray(i, 2) 'TEN SAN PHAM
          aResult(LR, 3) = sArray(i, 3) 'NGANH HANG
          aResult(LR, 4) = sArray(i, 4) 'HANG
        End If
      End If
    Next
    destWB.Close False
End Sub
Function bIsBookOpen(ByRef szBookName As String) As Boolean
' Rob Bovey
    On Error Resume Next
    bIsBookOpen = Not (Application.Workbooks(szBookName) Is Nothing)
End Function
Bài này code bữa được hỗ trợ là thế này
Mã:
Dim Dic As Object

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim sRng As Range, Res(), S As Variant, i As Long, sRow As Long

  Application.EnableEvents = False
  Application.ScreenUpdating = False
  Set sRng = Intersect(Range("A2:A600000"), Target)
  If Not sRng Is Nothing Then
    If Dic Is Nothing Then Call CreateDic
    If Not Dic Is Nothing Then
      sRow = sRng.Rows.Count
      ReDim Res(1 To sRow, 1 To 3)
      For i = 1 To sRow
        S = Dic.Item(sRng(i, 1).Value)
        If TypeName(S) = "Variant()" Then
          Res(i, 1) = S(0): Res(i, 2) = S(1): Res(i, 3) = S(2)
        End If
      Next i
      sRng.Offset(0, 1).Resize(, 3).Value = Res
    End If
  End If
  Application.EnableEvents = True
  Application.ScreenUpdating = True
End Sub

Private Sub CreateDic()
  Dim sArr As Variant, j As Long, k As Long, iKey

  On Error Resume Next
  With CreateObject("ADODB.Connection")
    .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\DATA_SP.xlsx;Extended Properties=""Excel 12.0;HDR=No"""
    sArr = .Execute("select * from [DATA_SP$A2:D1000000] where f1 is not null").GetRows
  End With
  If Err.Number = 0 Then
    Set Dic = CreateObject("Scripting.Dictionary")
    For j = 0 To UBound(sArr, 2)
      iKey = sArr(0, j)
      If Len(iKey) > 0 Then
        If Not Dic.exists(iKey) Then
          Dic.Add iKey, Array(sArr(1, j), sArr(2, j), sArr(3, j))
        End If
      End If
    Next
  Else
    MsgBox ("Khong tìm thay File du lieu")
    On Error GoTo 0
  End If
End Sub
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom