Nhờ giúp chuyển dữ liệu không bị trùng trong Excel

Liên hệ QC

nhathanpy08_05

Thành viên mới
Tham gia
29/12/08
Bài viết
9
Được thích
1
Mình có 1 Tong_hop có Tong_hop_thang 9.xls
Khi mình kích lên nút (hiện form) --> nút chuyển dữ liệu.
Bạn đầu mình file Tong_hop_thang 9.xls có 1 sheet tong_hop tất các các nhân viên bán hàng.
B1-. Đầu tháng phòng kinh doanh bán được số tiền như sheets(P_kinhdoanh1) mình chuyển số tiền qua sheets(tong_hop).
B2- Cuối tháng phòng kinh doanh bán được số tiền như sheets(P_kinhdoanh_2)mình chuyển số tiền qua sheets (tong_hop). Nhưng khi chuyển lần 2 thì dữ liệu bị trùng.
- Làm sao mình khi chuuyển lần 2 thì dữ liệu sẽ tự động cộng lại số tiền lân 1 nếu người đó đã có số tiền lần 1 theo MSNV?
Hoặc khi chuyển số tiền lần 2 thì tự động tạo báo lỗi khi có dữ liệu trùng?
 

File đính kèm

  • tong_hop_ thang 9.xls
    46 KB · Đọc: 24
Macro của bạn có thể là như vầy:

PHP:
Private Sub cmdTonghop_Click()
'On Error Resume Next '
 Dim wS As Worksheet, Sh As Worksheet
 Dim eRw As Long
 Dim Rng1 As Range, Clls As Range, Rng2 As Range, TC1 As Range, TC2 As Range
1 
 Sheets("TongHop").Select:                      eRw = [B65000].End(xlUp).Row
3 Set wS = Sheets("Taichinh1"):                  Set Sh = Sheets("Taichinh2")
 Set TC1 = wS.Range(wS.[A1], wS.[A65500].End(xlUp))
5 Set TC2 = Sh.Range(Sh.[A1], Sh.[A65500].End(xlUp))
 For Each Clls In Range([A2], [A65500].End(xlUp))
7   Set Rng1 = TC1.Find(Clls.Value, , xlFormulas, xlWhole)
   If Not Rng1 Is Nothing Then
9      Set Rng2 = TC2.Find(Clls.Value)
      If Not Rng2 Is Nothing And _
      Clls.Offset(, 2).Value = Rng1.Offset(, 2).Value + Rng2.Offset(, 2).Value Then
11         MsgBox "Da Chep Tu Tai Chinh 2", , "GPE.COM Xin Nhac Ban:"
         Exit Sub
13      End If
   Else
15      Clls.Offset(, 2).Value = Clls.Offset(, 2).Value + Rng2.Offset(, 2).Value
   End If
17 Next Clls
End Sub
Chú í:

(1) Mình đã chuyển mã thành dạng chuỗi;

(2) Biếu thêm bạn macro chép lần đầu trong file đính kèm
 

File đính kèm

  • GPE.rar
    19.5 KB · Đọc: 43
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
ANh Hyen17 ơi! Giúp giải thích dùm mấy đoạn code này đi
Dim wS As Worksheet, Sh As Worksheet
Dim eRw
As
Long
Dim Rng1
As Range, Clls As Range, Rng2 As Range, TC1 As Range, TC2 As
Range

Sheets
("TongHop").Select: eRw = [B65000].End(xlUp).
Row
Set wS
= Sheets("Taichinh1"): Set Sh = Sheets("Taichinh2"
)
Set TC1 = wS.Range(wS.[A1], wS.[A65500].End(xlUp
))
Set TC2 = Sh.Range(Sh.[A1], Sh.[A65500].End(xlUp
))
For
Each Clls In Range([A2], [A65500].End(xlUp
))
Set Rng1 = TC1.Find(Clls.Value, , xlFormulas, xlWhole
)
If
Not Rng1 Is Nothing Then
Set Rng2
= TC2.Find(Clls.Value
)
If
Not Rng2 Is Nothing And
_
Clls
.Offset(, 2).Value = Rng1.Offset(, 2).Value + Rng2.Offset(, 2).
Value Then
MsgBox
"Da Chep Tu Tai Chinh 2", ,
"GPE.COM Xin Nhac Ban:"
Exit
Sub
End
If
Else
Clls.Offset(, 2).Value = Clls.Offset(, 2).Value + Rng2.Offset(, 2).
Value
End
If
Next Clls
End Sub

! Để em hiểu và phát triển thêm chứ bài tập là mình lấy Phòng Tài chính cho nó đơn giản thôi chứ thật sự bài tập nhiều phòng ban lắm.Cảm ơn anh nhiều
 
Lần chỉnh sửa cuối:
Upvote 0
Mình có 1 Tong_hop có Tong_hop_thang 9.xls
Khi mình kích lên nút (hiện form) --> nút chuyển dữ liệu.
Bạn đầu mình file Tong_hop_thang 9.xls có 1 sheet tong_hop tất các các nhân viên bán hàng.
B1-. Đầu tháng phòng kinh doanh bán được số tiền như sheets(P_kinhdoanh1) mình chuyển số tiền qua sheets(tong_hop).
B2- Cuối tháng phòng kinh doanh bán được số tiền như sheets(P_kinhdoanh_2)mình chuyển số tiền qua sheets (tong_hop). Nhưng khi chuyển lần 2 thì dữ liệu bị trùng.
- Làm sao mình khi chuuyển lần 2 thì dữ liệu sẽ tự động cộng lại số tiền lân 1 nếu người đó đã có số tiền lần 1 theo MSNV?
Hoặc khi chuyển số tiền lần 2 thì tự động tạo báo lỗi khi có dữ liệu trùng?
Sao bạn không dùng code gom tất cả các sheet về chung 1 sheet, sau đó dùng Pivot Table để tổng hợp (tôi thấy làm vậy đơn giản nhất)
 
Upvote 0
Viết theo yêu cầu của tác giả

(Xem theo số của dòng lệnh đã được quýnh:)

03 dòng trước D1: Khai báo các biến cần dùng;
D2: Phần đầu: Kíncc hoạt trang tính 'TongHop'
Phần sau Lấy dòng cuối chứa dữ liệu (DL) tại cột 'B' gán vô biến đã khai báo;
D3: Gán các trang tính tương ứng vô các biến đã khai báo;
D4: Gán vùng DL của cột 'A' thuộc trang wS vô biến đối tượng vùng TC1
D5: (tương tự dòng 4)
D6: Tạo vòng lặp (cho đến dòng lệnh cuối) duyệt tất thảy các ô chứa DL trong cột 'A' thuộc trang tính đang được kích hoạt;
D7: Thực thi phương thức tìm kiếm trong vùng TC1, với giá trị tìm là trị trong các ô chứa thuộc dòng lệnh 6
D8: Nếu tìm thấy thì thực hiện các lệnh cho đến dòng 14
D9: (Tương tự như D7) nhưng ở trang tính khác còn lại;
9 Set Rng2 = TC2.Find(Clls.Value)
D10: Nếu tìm thấy & giá trị chứa trong ô cùng dòng với trị đem tìm (Clls) & cách 2 ô về phía phải bằng với tổng hai giá trị tương ứng tại 2 ô cùng cách 2 cột về phía phải của 2 ô tìm thấy thì thực hiện các lệnh 11 & 12
(Chú í: Vì dòng lệnh dài nên ngắ`t ra làm 2 bằng dấu ngang dưới)
D11: Hiện thông báo;
D12: Thoát khỏi chương trình
D13: Dấu hiệu kết thúc lệnh khi thỏa điếu kiện tại D10
D14: Nếu không thỏa điều kiện (từ dòng lệnh 8) thì thực hiện dòng lệnh tiếp
D15: Nhập tiếp giá trị tìm thấy vô trang tổng hợp
D16: Kết thúc việc xét điều kiện
D17: Kết thúc vòng lặp

Chúc thành công!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom