Xin chỉ cách tạo hàm tự cộng tăng dần.

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

ndv_son

Thành viên mới
Tham gia
25/1/13
Bài viết
46
Được thích
4
Thân chào mọi người!
Hiện mình có 1 bản báo cáo, hằng ngày nhập vào 1 con số thực hiện, sau đó lấy số lũy kế thực hiện trước đó + với số thực hiện trong ngày, công việc này ngày nào cũng phải làm và số lượng các ô ko liền kề nhau nên cứ phải dán giá trị rồi kéo + vào, chậm và dễ sót quá.
Mình post mẫu excel này lên, hi vọng mọi người có cách nào chỉ giúp mình với, xin chân thành cám ơn mọi người.
 

File đính kèm

Cái này quá dễ mà bạn!!!! Xem file đi!!!
 
Cám ơn bạn manh_linh nhiều nhé, nhưng vấn đề mình cần ko đơn giản như vậy đâu. Ý mình là sau khi nhập tiếp giá trị vào, số lũy kế sẽ tính tăng lên từ giá trị trước đó cộng thêm phần vừa mới nhập vô, chứ không phải chỉ đúng bằng con số vừa nhập vào.
Mong AE quan tâm chỉ dẫn thêm.
 
Cám ơn bạn manh_linh nhiều nhé, nhưng vấn đề mình cần ko đơn giản như vậy đâu. Ý mình là sau khi nhập tiếp giá trị vào, số lũy kế sẽ tính tăng lên từ giá trị trước đó cộng thêm phần vừa mới nhập vô, chứ không phải chỉ đúng bằng con số vừa nhập vào.
Mong AE quan tâm chỉ dẫn thêm.

Vậy nháy phải lên tab sheet rồi chọn view code, và copy dán code sau vào,


Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Target.Value = Empty Then Exit Sub
    If Not Intersect([[COLOR="#FF0000"]B3:B1000[/COLOR]], Target) Is Nothing Then
        Application.EnableEvents = False
        On Error GoTo 1001:
        With Target
            .Offset(, 1).Value = .Offset(, 1).Value + .Value
        End With
1001:   Application.EnableEvents = True
    End If
End Sub

Chú ý: thay đổi vùng đỏ cho hợp lý với vùng dữ liệu nhập

Lưu ý , nếu nhập nhầm thì không thể undo được nhé vì đã dùng macro, (khi đó tốt nhất nhập số âm lại để trừ đi)

Muốn thiết kế undo thì phức tạp hơn
 
Lần chỉnh sửa cuối:
Cám ơn bạn manh_linh nhiều nhé, nhưng vấn đề mình cần ko đơn giản như vậy đâu. Ý mình là sau khi nhập tiếp giá trị vào, số lũy kế sẽ tính tăng lên từ giá trị trước đó cộng thêm phần vừa mới nhập vô, chứ không phải chỉ đúng bằng con số vừa nhập vào.
Mong AE quan tâm chỉ dẫn thêm.

Không hiểu ý bạn, bạn vu_tuan_manh_linh đã làm đúng yêu cầu rồi còn gì. Bạn hãy cho vài ví dụ vào file cho dễ hiểu hơn nhé
 
Cám ơn bạn vodoi2x nhiều lắm nha. Bài viết của bạn vừa giúp mình làm được điều mình muốn, vừa giúp mình biết cách chèn code vô nữa hehe ^^. Trước giờ thấy mấy AE hay chia sẻ code mà ko biết cách chèn vào để sử dụng hì hì.
Vodoi2x có thể hướng dẫn cho mình nếu mình muốn thêm những cặp cột thực hiện và luỹ kế như vậy vào thì sẽ chỉnh sửa code lại ra sao vậy bạn?
Rất cám ơn bạn đã chia sẻ !
 
Cám ơn bạn vodoi2x nhiều lắm nha. Bài viết của bạn vừa giúp mình làm được điều mình muốn, vừa giúp mình biết cách chèn code vô nữa hehe ^^. Trước giờ thấy mấy AE hay chia sẻ code mà ko biết cách chèn vào để sử dụng hì hì.
Vodoi2x có thể hướng dẫn cho mình nếu mình muốn thêm những cặp cột thực hiện và luỹ kế như vậy vào thì sẽ chỉnh sửa code lại ra sao vậy bạn?
Rất cám ơn bạn đã chia sẻ !

Cặp cột thế nào? vị trí ra sao?

ví như nếu ở sheet khác vị trí tương tự B3:B1000 , thì chỉ việc copy vào trang sheet-code của sheet đó là được

Còn nếu cùng she e t thì phải nhận code lên kiểu khác,

Túm lại bạn nên nói rõ thì mới giúp được
 
Hiện tại mình file ví dụ của mình là cặp cột B và C, giờ mình muốn tiếp tục cho các cặp cột D và E, rồi F và G...
Mong bạn vodoi2x giúp đỡ thêm, cám ơn bạn!
 
Hiện tại mình file ví dụ của mình là cặp cột B và C, giờ mình muốn tiếp tục cho các cặp cột D và E, rồi F và G...
Mong bạn vodoi2x giúp đỡ thêm, cám ơn bạn!


thế chỉ cần thêm
phần đỏ
[B3:B1000]
thành phần phần xanh xanh sau
Union([B3:B1000],[D3:D1000],[F3:F1000])

túm lại CODE đó trở thành

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Target.Value = Empty Then Exit Sub
    If Not Intersect([COLOR="#0000FF"]Union([B3:B1000],[D3:D1000],[F3:F1000])[/COLOR], Target) Is Nothing Then
        Application.EnableEvents = False
        On Error GoTo 1001:
        With Target
            .Offset(, 1).Value = .Offset(, 1).Value + .Value
        End With
1001:   Application.EnableEvents = True
    End If
End Sub

tương tự thích cho thêm cặp cột nào vào thì cho như trên (lưu ý các cặp cột liền kề và tất cả cùng nằm trong sheet có code trên)
 
Lần chỉnh sửa cuối:
Cám ơn bạn manh_linh nhiều nhé, nhưng vấn đề mình cần ko đơn giản như vậy đâu. Ý mình là sau khi nhập tiếp giá trị vào, số lũy kế sẽ tính tăng lên từ giá trị trước đó cộng thêm phần vừa mới nhập vô, chứ không phải chỉ đúng bằng con số vừa nhập vào.
Mong AE quan tâm chỉ dẫn thêm.
Mình tối dạ, vẫn chưa hiểu yêu cầu của bạn!!!
 
Cám ơn bạn vodoi2x nhiều nhé !
@manh_linh: Bạn làm theo cách của vodoi2x bày cho mình thì bạn sẽ hiểu ý của mình. Hii, rất cám ơn bạn đã quan tâm nhé!
 
thế chỉ cần thêm
phần đỏ
[B3:B1000]
thành phần phần xanh xanh sau
Union([B3:B1000],[D3:D1000],[F3:F1000])

túm lại CODE đó trở thành

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Or Target.Value = Empty Then Exit Sub
    If Not Intersect([COLOR=#0000FF]Union([B3:B1000],[D3:D1000],[F3:F1000])[/COLOR], Target) Is Nothing Then
        Application.EnableEvents = False
        On Error GoTo 1001:
        With Target
            .Offset(, 1).Value = .Offset(, 1).Value + .Value
        End With
1001:   Application.EnableEvents = True
    End If
End Sub

tương tự thích cho thêm cặp cột nào vào thì cho như trên (lưu ý các cặp cột liền kề và tất cả cùng nằm trong sheet có code trên)
Bạn cho mình hỏi có thể nào truy xuất lại các số đã nhập không? Cảm ơn
 
Web KT

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

Back
Top Bottom