Làm thế nào để tự động tính tổng cho thành phần Chi phí trực tiếp
Em xin cảm ơn.
Mỗi công việc của em ở file đính kèm thì tại cột B, những dòng Cộng chi phí trực tiếp nó được xác định:
Cộng chi phí trực tiếp = Vật liệu + Nhân công + Máy thi công.
Em xin nhờ các anh, chị trên diễn đàn giúp em làm thế nào để tự động điền giá trị của các dòng Cộng chi phí trực tiếp (các ô em tô màu vàng) có thể bằng:
– Công thức Excel đơn thuần
– hoặc Bằng VBA
(nếu bằng VBA xin hãy giúp em cách tạo Sub để mỗi khi chạy VBA nó sẽ tự động điền công thức vào như ô mẫu J11).
Em xin cảm ơn.
Bạn dùng Code này thử xem sao:
Sub Test()
Application.Calculation = xlCalculationManual
Dim Cll As Range, Str As String
For Each Cll In Range(, .End(xlUp))
If Cll.Value = "VËt liÖu" Or Cll.Value = "Nh©n c«ng" Or Cll.Value = "M¸y thi c«ng" Then
Str = Str & "+" & Cll.Offset(, 7).Address
ElseIf Cll.Value = "Céng chi phÝ trùc tiÕp" Then
Cll.Offset(, 7).Value = Replace(Str, "+", "=", , 1)
Str = ""
End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub
Nếu bạn muốn dùng công thức thì dùng công thức này cho ô J11:
=SUMPRODUCT($J$4:J10,($C$4:C10="VËt liÖu")+($C$4:C10="Nh©n c«ng")+($C$4:C10="M¸y thi c«ng"))-SUMIF($C$4:C10,"Céng chi phÝ trùc tiÕp",$J$4:J10)
Sau đó copy công thức này cho các dòng Cộng chi phí nhân công trực tiếp
www.giaiphapexcel.com/diendan/threads/l%C3%A0m-th%E1%BA%BF-n%C3%A0o-%C4%91%E1%BB%83-t%E1%BB%B1-%C4%91%E1%BB%99ng-t%C3%ADnh-t%E1%BB%95ng-cho-th%C3%A0nh-ph%E1%BA%A7n-chi-ph%C3%AD-tr%E1%BB%B1c-ti%E1%BA%BFp.47717/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Cái đó cũng đâu có ảnh hưởng gì đâu nhỉ. Nhưng nếu bạn muốn thì sửa lại như thế này:
Sub Test()
Application.Calculation = xlCalculationManual
Dim Cll As Range, Str As String
For Each Cll In Range(, .End(xlUp))
If Cll.Value = "VËt liÖu" Or Cll.Value = "Nh©n c«ng" Or Cll.Value = "M¸y thi c«ng" Then
Str = Str & "+" & Cll.Offset(, 7).Address(0, 0)
ElseIf Cll.Value = "Céng chi phÝ trùc tiÕp" Then
Cll.Offset(, 7).Value = Replace(Str, "+", "=", , 1)
Str = ""
End If
Next
Application.Calculation = xlCalculationAutomatic
End Sub
Bởi vì…em chưa biết tương đối hay tuyệt đối trong VBA phân biệt như thế nào hihi, em hỏi để học lỏm anh ah.
Có 1 cách rất thô là:
Đưa chuỗi 'Vật liệu' vô 1 Name; 2 chuỗi còn lại wính trực tiếp được mà;
Cách 'hàm lăm' hơn là phải tìm trên diễn đàn (Tìm hàm CHRWin() í)
. . . Có thể còn cách khác nhưng mình chưa biết
Có 2 cách:
1. Gõ các cụm chữ cần thiết vào các ô nào đó của trang tính, rồi lấy giá trị của ô để so sánh với Cll.Value
2. Dùng hàm sau để chuyển sang mã Unicode của ký tự có dấu rồi dùng:
Ví dụ sẽ không gõ được chữ Vật Liệu thì thay vì: If Cll.Value = "Vật Liệu" thì hãy dùng: If Cll.Value = "V" & ChrW(7853) & "t Li" & ChrW(7879) & "u"