Thử với file này xem sao, hình như yêu cầu chưa hết, chắc còn hỏi nữa.em có file đơn giá chi tiết em dùng các công thức để tách nhân công vật tư và máy.
Em nhờ sự giúp đỡ viết thành code (em gửi file đính kèm)
em có file đơn giá chi tiết em dùng các công thức để tách nhân công vật tư và máy.
Em nhờ sự giúp đỡ viết thành code (em gửi file đính kèm)
Sub Phantich()
Dim arr(), d, e
With ActiveSheet
Cells.UnMerge
arr = .Range(.[C7], .[C65536].End(xlUp).Offset(, -2).Resize(, 8)).Formula
d = 0: e = 0
For i = UBound(arr) To 1 Step -1
d = d + 1: e = e + 1
If arr(i, 4) = "V" & ChrW(7853) & "t li" & ChrW(7879) & "u" Or _
arr(i, 4) = "Nhân công" Or arr(i, 4) = "Máy thi công" Then
arr(i, 8) = "=SUM(R[1]C:R[" & d - 1 & "]C)"
d = 0
End If
If arr(i, 2) <> "" Then arr(i, 8) = "=SUM(R[1]C:R[" & e - 1 & "]C)/2": d = 0: e = 0
Next
.Range("A7").Resize(UBound(arr), 8).Value = arr
End With
End Sub
Cảm ơn Thanhlanh! rất OK; tuy nhiên xin hỏi thêm bạn:
Nếu các kết quả nhân công, máy thi công, vật liệu cần tô đậm (Font.Bold) thì code được khai báo lại như thế nào.
Sub Phantich()
Dim arr(), d, e, i, cell As Range
With ActiveSheet
Cells.UnMerge
arr = .Range(.[C7], .[C65536].End(xlUp).Offset(, -2).Resize(, 8)).Formula
d = 0: e = 0
For i = UBound(arr) To 1 Step -1
d = d + 1: e = e + 1
If arr(i, 4) = "V" & ChrW(7853) & "t li" & ChrW(7879) & "u" Or _
arr(i, 4) = "Nhân công" Or arr(i, 4) = "Máy thi công" Then
arr(i, 8) = "=SUM(R[1]C:R[" & d - 1 & "]C)"
d = 0
End If
If arr(i, 2) <> "" Then arr(i, 8) = "=SUM(R[1]C:R[" & e - 1 & "]C)/2": d = 0: e = 0
Next
.Range("A7").Resize(UBound(arr), 8).Formula = arr
[COLOR=#ff0000] For Each cell In .Range(.[D7], .[D65536].End(xlUp))
With cell
If .Offset(, -2) <> "" Then .Font.Bold = True: .Font.ColorIndex = 3
If .Value = "V" & ChrW(7853) & "t li" & ChrW(7879) & "u" Or _
.Value = "Nhân công" Or .Value = "Máy thi công" Then
.Offset(, 4).Font.Bold = True
End If
End With
Next
[/COLOR] End With
End Sub
Sau khi có sheet DGCT mình cho chuyển qua sheet dự toán gồm 3 cột VT M, NCông ( Mình đã chuyển được mã hiệu, hạng mục công việc, đơn vị) còn 3 anh trên chưa chuyển được (Mình Lập dự toán theo dạng phân tích đơn giá trước và gắn giá tại thời điểm lập dự toán vào)
cảm ơn bạn
code trên bạn không khai báo Dim arr(), d, e, i, cell As Range mà là Dim arr(), d, e
và cái code mới mình chạy báo lỗi biến i, cell As Range
bạn xem hộ