viet code cho bản đơn giá chi tiết (1 người xem)

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

Người dùng đang xem chủ đề này

vndat

Thành viên mới
Tham gia
15/12/08
Bài viết
33
Được thích
0
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)
 

File đính kèm

Có ai biết chỉ giúp mình với
Mình đưa sẵn lên fon UNicode: Vật liệu: "v" & ChrW(7853) & "t li" & ChrW(7879) & "u"
Nhân công: "Nhân công"
Máy thi công: "Máy thi công"
 
Upvote 0
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)
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.
 

File đính kèm

Upvote 0
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)

Code cho đồng chí đây:
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
 
Lần chỉnh sửa cuối:
Upvote 0
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.
Mình Mới phát hiện bạn cũng là dân xây dựng. và cũng tự lập dự toán để sử dụng vì thế mình muốn hỏi luôn bạn như sau:
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
 
Lần chỉnh sửa cuối:
Upvote 0
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.

Thêm đoạn code màu đỏ này vào chớ khai báo sao được:

Mã:
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

Bạn lập thêm Sheet Dutoan và Sheet PTVT đi lúc nào rãnh tôi viết code giúp cho.
 
Upvote 0
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ộ
 
Upvote 0
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ộ

Sao lỗi được, đã copy nguyên xi code sau về chạy chưa? tôi thấy cái trước quên chưa khai báo i thì giờ thêm thôi, chắc bạn copy cái sau bỏ vào cái trước nên bị lỗi, xóa bỏ hẳn code cũ đi, tiếc gì.
Bạn phải nghiên cứu VBA đi để còn bắt nó chạy như ý mình, xử lý những lỗi đơn giản, tự thêm được các thành phần râu ria như khai báo biến, vô hiệu hóa một số thứ để tăng tốc độ VBA, v.v... Người giúp bạn làm nhà thì họ chỉ làm phần chính là xây nhà thôi, còn lại bố trí vật dụng, dọn dẹp, thậm chí sửa chửa nhỏ thì bạn phải biết chớ. Nếu không thì bạn mua phần mềm có sẵn cho rồi.
 
Upvote 0
Rất cảm ơn bạn đã chỉ dạy. và mình đâu muốn

Font.ColorIndex = 3 Mình muốn Font.ColorIndex = 1 thôi.
hỏi bạn như thế thì bạn phải hỏi lại có phải sub trên bạn khai báo trùng biến i hay không?
em đang tập viết có gì anh thông cảm!
Cái hay là cái tự tìm hiều về VBA để viết. còn viết để xài thì mình không cần.
rất cảm ơn bạn;

 
Upvote 0
Web KT

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

Back
Top Bottom