Nhờ viết dùm macro ghi số liệu

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

NTT_114

Thành viên mới
Tham gia
11/6/07
Bài viết
2
Được thích
1
Kính gửi các anh chị trong diễn đàn
Tôi có file excel sử dụng hàm sumproduct, nhung khi tính toán excel chạy rất chậm. Tôi không biết cách nào khắc phục, chỉ có cách viết macro, nhưng tôi không biết gì về VBA. Rất rất cần sự giúp đỡ của các anh chị trong diễn đàn. File của tôi có 4 sheet theo thứ tự: HSNV. DonGia, DuLieu, Luong CT. Tôi nhờ các anh chị viết dùm 1 macro để ghi thời gian theo ĐM ở sheet HSNV, và 1 macro ghi lương ở sheet Luong CT. Cám ơn các anh chị nhiều
 

File đính kèm

Kính gửi các anh chị trong diễn đàn
Tôi có file excel sử dụng hàm sumproduct, nhung khi tính toán excel chạy rất chậm. Tôi không biết cách nào khắc phục, chỉ có cách viết macro, nhưng tôi không biết gì về VBA. Rất rất cần sự giúp đỡ của các anh chị trong diễn đàn. File của tôi có 4 sheet theo thứ tự: HSNV. DonGia, DuLieu, Luong CT. Tôi nhờ các anh chị viết dùm 1 macro để ghi thời gian theo ĐM ở sheet HSNV, và 1 macro ghi lương ở sheet Luong CT. Cám ơn các anh chị nhiều
Dữ liệu của bạn đã khá chuẩn rồi... Giờ để tổng hợp chỉ cần dùng PivotTable là đủ ---> Khỏi VBA, khỏi công thức gì ráo
--------------
Lưu ý: Dữ liệu của bạn có trùng 1 chổ: Mã 00546, tên Vũ Văn Tiên vừa nằm ở tổ SS2 lại vừa nằm ở tổ SCSS (tôi dùng PivotTable phát hiện ngay lập tức)
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn NDU, Tôi đã giải quyết được vấn đề, nhưng nếu chuyển sang sử dụng VBA thì tôi sẽ học hỏi thêm nhiều khi sử dụng VBA cho những trường hợp khác. Một lần nữa cám ơn ndu.
 
Upvote 0
Cái chú NDU này thiệt là . . . .

Đây, thích thì chìu; Muốn VBA có VBA: (Xem kỹ trong file nha!)
Mã:
Option Explicit
Dim Rng As Range, Sh As Worksheet
Dim eRw As Long, Col As Byte, Dat As Date

[B]Sub Luong()[/B]

 Sheets("Luong CT").Select:               GPE "I"
[B]End Sub[/B]
Mã:
[B]Sub ThoiGian()[/B]
 
 Sheets("HSNV").Select:                   GPE "K"
[B]End Sub[/B]
PHP:
Sub GPE(sCol As String)
 Dim Cls As Range, sRng As Range
 Dim MyAdd As String:                     Dim SoTri As Double
 
 eRw = [b65500].End(xlUp).Row:            Col = Selection.Column
 Set Sh = Sheets("DuLieu")
 If Col < 5 Or Col > 35 Then Exit Sub
 Set Rng = Sh.Range(Sh.[B1], Sh.[b65500].End(xlUp))
 Dat = Format(Cells(5, Col), "MM/dd/yyyy")
 Application.ScreenUpdating = False
 For Each Cls In Cells(6, Col).Resize(eRw - 5)
   Set sRng = Rng.Find(Cells(Cls.Row, "B").Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         If Dat = sRng.Offset(, -1).Value Then _
            SoTri = SoTri + Sh.Cells(sRng.Row, sCol)
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
      Cls.Value = SoTri:                  SoTri = 0
   End If
 Next Cls
 Set Sh = Nothing:                        Set Rng = Nothing
End Sub
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom