Dò tìm dữ liệu từ sheet này trong sheet với ngôn ngữ VBA

Liên hệ QC

giangcoilove

Thành viên mới
Tham gia
10/2/14
Bài viết
45
Được thích
4
Thưa các thầy cô. Em là người mới, hiện em là nhân sự và em đang ham thích về VBA để sử dụng exel cuối tháng dò công
Em có 1 sheet tổng hợp tất cả nhân viên em gọi là sheet data. Và công việc của em là dò công. Khi e có 1 list danh sách ( SHEET1) khác thắc mắc về công lương, e muốn khi mình coppy dòng mã nhân viên và e bấm nút Check tự động dữ liệu liên quan sẽ hiện sang sheet 1 ( là sheet data), và cứ thế e kiểm tra những mã nhân viên cần dò đó xem đúng công hay chưa? Còn bị thiếu gì? E dò theo Mã số nhân viên và ngày làm việc. em không biết mình giải thích như vậy đã rõ chưa ak. Các thầy cô thấy chỗ nào chưa được nói em, em nói thêm ak. em xin cảm ơn . em có đính kèm theo file
File em đính kèm là file của 1 người đi trước viết cho em. Nhưng viết trên cùng 1 sheet và mỗi lần dò tìm chỉ dò được 1 Mã nhân viên và của 1 ngày thôi. em muốn 1 lần mình có thể check được nhiều người

xin thầy cô chỉ cho em.. em chân thành cám ơn,
 

File đính kèm

Bạn mô tả lại 1 thao tác cụ thể nhé.
Trong file có 1 code thực hiện từ nút SAVE, ô I3 có ý nghĩa gì không?
 
Upvote 0
Dạ. đó là vấn đề em cần đấy ak. Tức là sheet Data đã được viết code, nhưng mỗi lần e check chỉ được 1 mã nhân viên và 1 ngày thôi. Khi em nhập mã nhân viên ở cột B sheet Data và ngày ở cột C sheet Data và lý do ở cột D sheet Data và giờ vào ra ở cột E & F sheet data, sau đó e nhấn chữ Save. Tự động những thông tin e mới nhập phía trên nó sẽ tìm đến danh sách phía dưới tương ứng mã nhân viên và ngày đồng thời nó cũng hiện luôn lý do em mới nhập phía trên ra cho e xem luôn.

Vì do công nhân viên em rất nhiều, cuối tháng em phải dò tìm những bạn thắc mắc cho em trong 3600260 dòng dữ liệu, em dùng hàm match và index để dò tìm thì rất nặng. Máy em chạy không nôỉ, nên chị kia đã viết cho em nhưng mỗi lần e chỉ nhập dc 1 bạn thôi, nhưng e có tới 1 danh sách dài cần phải dò tìm trong file 3600260 dòng data, nếu cứ nhập từng bạn xong xem từng cái thì rất lâu

không biết em nói vậy đã được chưa anh, em đang muốn hoc bên ngôn ngữ VBA nhưng chưa biết bắt đầu từ đâu, xin anh chỉ giáo dùm em
 
Upvote 0
dạ. Tức là thay vì như lúc đầu e nhập mã nhân viên trên sheet data để dò tìm xuống dưới. thì bây giờ em sẽ nhập bên sheet 1, nhập tất cả dữ liệu vào đó. rồi e bấm nút check, tự động sheet data sẽ nổi cái lý do e mới nhập bên sheet 1 trên những dòng mã số nhân viên tương ứng bên sheet 1 có trong sheet data.
giống như cái macro đã được viết sẳn ơ sheet data, nhưng cái đó chỉ làm dc 1 bạn thôi, giờ em tìm nhiều bạn trong sheet data ấy. Thay vì e nhập 1 bạn, giờ em muốn nhập nhiều bạn thì làm sao ak a. ?
 

File đính kèm

  • VBA.JPG
    VBA.JPG
    278.1 KB · Đọc: 9
Upvote 0
Bạn xem file đính kèm, lấy dữ liệu từ Data qua Sheet1 để kiểm tra nhé.
Mã:
Sub Button5_Click()
Dim sRng As Range, rRng As Range, iR As Long, jR As Long
Dim kR As Long, mR As Long, nR As Long, sArr(), rArr()
Set sRng = Sheets("Data").Range("B6:V" & Sheets("Data").Range("B1048575").End(xlUp).Row)
nR = Sheets("Sheet1").Range("B1048575").End(xlUp).Row
Set rRng = Sheets("Sheet1").Range("B4:F" & nR)
ReDim sArr(1 To sRng.Rows.Count, 1 To sRng.Columns.Count)
sArr = sRng.Value
ReDim rArr(1 To nR, 1 To 16)
For iR = 1 To UBound(rArr, 1)
    For jR = 1 To UBound(sArr, 1)
        If sArr(jR, 1) = Format(rRng(iR, 1), "00000") And sArr(jR, 2) = rRng(iR, 2) Then
            For mR = 1 To 16
                rArr(iR, mR) = sArr(jR, mR + 5)
            Next mR
        End If
    Next jR
Next iR
Sheets("Sheet1").Range("G4:V1048575").ClearContents
Sheets("Sheet1").Range("G4:V" & nR) = rArr
End Sub
 

File đính kèm

Upvote 0
Em đa tạ anh. Vậy là từ tháng sau em chỉ cần coppy dữ liệu vào sheet data. Và em cần check ai thì e sẽ nhập vào sheet 1 thôi đúng ko anh

Hơn như em mong đợi anh ak.. cám ơn anh cám ơn anh, e nghiên cứu cái này. thik quá anh ak
 
Upvote 0
Web KT

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

Back
Top Bottom