BuiQuangThuan
❆❆❆❆❆❆❆❆❆❆❆❆
- Tham gia
- 17/12/10
- Bài viết
- 2,671
- Được thích
- 3,254
- Giới tính
- Nam
Chào các thầy cô.
Hiện tại em đang có công việc mà chưa thông
Mong mọi người chỉ giúp ạ
Đầu vào em có 2 file:
1- file data (gồm sheet Master) chứa dữ liệu
2- file Form chứ kết quả sau khi lọc (Hình minh họa)
Mục đích: Lọc ra các nhân viên có ngày tháng sinh nhật từ ngày A đến ngày B với điều kiện vẫn đi làm bình thường
Ban đầu em có ý định là lấy dữ liệu từ file data. Sau đó lọc theo điều kiện từ ngày tháng A đến ngày tháng B ( do Kỳ tính lương của công ty từ nửa tháng nọ tới nửa tháng kia chứ không phải là 1 tháng nguyên)
Nhưng vướng cái em không tìm được điều kiện thích hợp để làm (+ khó quá)
Sau đó có chuyển hướng lọc theo tháng và có viết được đoạn code sau:
Khi em có thêm điều kiện
Thì thấy chạy đoạn code trên không có động tĩnh gì cả mà không biết đang bị sai chỗ nào.
Vậy nên nhờ thầy cô chỉ giúp là em đang làm sai chỗ nào được không ạ
Nếu có thể thì gợi ý giúp em theo hướng từ ngày tháng A đến ngày tháng B với.
Em xin cám ơn nhiều
Hiện tại em đang có công việc mà chưa thông
Mong mọi người chỉ giúp ạ
Đầu vào em có 2 file:
1- file data (gồm sheet Master) chứa dữ liệu
2- file Form chứ kết quả sau khi lọc (Hình minh họa)
Mục đích: Lọc ra các nhân viên có ngày tháng sinh nhật từ ngày A đến ngày B với điều kiện vẫn đi làm bình thường
Ban đầu em có ý định là lấy dữ liệu từ file data. Sau đó lọc theo điều kiện từ ngày tháng A đến ngày tháng B ( do Kỳ tính lương của công ty từ nửa tháng nọ tới nửa tháng kia chứ không phải là 1 tháng nguyên)
Nhưng vướng cái em không tìm được điều kiện thích hợp để làm (+ khó quá)
Sau đó có chuyển hướng lọc theo tháng và có viết được đoạn code sau:
Mã:
Sub ABC()
Dim cn As Object, rs As Object
Dim sFile, oFile, sh As Worksheet, S, fRow&, eRow&
Dim sArr(), Res(), i&, sR&, tmp$, K&
Application.ScreenUpdating = False
Set sh = Sheets("Sinh Nhat")
With sh
eRow = .Range("B" & Rows.Count).End(xlUp).Row
tmp = .Range("D3").Value
End With
If eRow >= 5 Then sh.Range("A6:G10000").ClearContents
sFile = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*),*.xlsx", _
Title:="Select File", MultiSelect:=True)
If VarType(sFile) = vbBoolean Then MsgBox ("Chua chon File du lieu"): Exit Sub
Set cn = CreateObject("adodb.connection")
For Each oFile In sFile
If Val(Application.Version) < 12 Then
cn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & oFile & ";Extended Properties=""Excel 8.0;HDR=No"";")
Else
cn.Open ("provider=Microsoft.ACE.OLEDB.12.0;data source=" & oFile & ";mode=Read;extended properties=""Excel 12.0;hdr=no"";")
End If
fRow = sh.Range("D" & Rows.Count).End(xlUp).Row + 1
Set rs = cn.Execute("select * from [Master$C5:P65000] where f2 is not null")
If Not rs.EOF() Then
sArr = rs.GetRows
sR = UBound(sArr, 2)
ReDim Res(0 To sR, 0 To 6)
For i = 0 To sR
If Month(sArr(10, i)) = tmp Then
If sArr(6, i) = "" Then
K = K + 1
Res(K - 1, 0) = K:
Res(K - 1, 1) = sArr(0, i): Res(K - 1, 2) = sArr(1, i)
Res(K - 1, 3) = sArr(10, i): Res(K - 1, 6) = sArr(7, i)
End If
End If
Next i
End If
rs.Close: cn.Close
If K > 0 Then sh.Range("A6:G6").Resize(K) = Res
Next
Set cn = Nothing: Set rs = Nothing
Application.ScreenUpdating = True
End Sub
Mã:
If sArr(6, i) = "" Then
Vậy nên nhờ thầy cô chỉ giúp là em đang làm sai chỗ nào được không ạ
Nếu có thể thì gợi ý giúp em theo hướng từ ngày tháng A đến ngày tháng B với.
Em xin cám ơn nhiều