監造日報表系列-進度湊不到100%的解法

監造日報表在填寫數量的時候有兩種方法

1.單一工項
2.組合工項

經使用者反應,常因為數量計算表或數量統計表上的四捨五入問題,最後可能會有實際進度無法變成100%的狀況產生。

在組合工項的處理上,藉由設計圖上的標示尺寸來設置單元數量(U型溝每進行米共需多少鋼筋、模板、混凝土or紐澤西護欄每塊共需多少鋼筋、模板、混凝土、油漆),除了便於監造人員便於計算工程用量,也能透過單元的總計檢討先進行初步檢核總量是否有異常,計算所得到的單元數量才一併列於數量統計表上,最後所有數量列出後的加總值才進行四捨五入,自然而然會有些許的誤差導致無法於實際進度表上看見100%的數值。

接下來會將這個模組放置於新版本中,有興趣請加入我的官方賴,會在更新時一併提醒訂閱用戶哦~

--------------------------------------------------------------------------

解決方法


將所有的項目都列出後,數量都已確認放上去,再將契約數量與實際數量的誤差攤回去原本的工程用量做尾數補整即可。

程式碼如下

'------20221122 處理剩餘零星數量--------

Sub getOverNumberFromLastDay()

reportNum = InputBox("請輸入理應為100%的報表編號")
allowence = InputBox("請輸入校正回歸允許值", , 1)
prompt = "***校正回歸完成項目***" & vbNewLine

With Sheets("Report")

    .Range("K2") = reportNum

    Call ReportRun
    
    For r = 8 To getReportLastRow
    
        conNum = .Cells(r, "F")
        sumNum = .Cells(r, "I")
        
        If conNum <> sumNum Then
        
            itemName = .Cells(r, "B")
            numDiff = Round(sumNum - conNum, 4)
            
            If Abs(numDiff) < allowence Then
            
                Call dealOverNum(itemName, numDiff)
            
                prompt = prompt & vbNewLine & itemName & ":" & numDiff
        
            End If
        
        End If
    
    Next
    
    MsgBox prompt, vbInformation

End With

End Sub

Sub dealOverNum(ByVal itemName As String, ByVal numDiff As Double)

With Sheets("Records")

    lr = .Cells(.Rows.count, 1).End(xlUp).Row
    
    For r = lr To 3 Step -1
    
        recName = .Cells(r, "E")
        
        If recName = itemName Then
        
            originNum = .Cells(r, "F")
            
            adjustNum = originNum - numDiff
            
            If adjustNum > 0 Then
            
                Debug.Print itemName & ",原數量=" & originNum & ">>校正=" & adjustNum
            
                .Cells(r, "F").AddComment "originNum=" & .Cells(r, "F") & ">>adjustNum=" & adjustNum
            
                .Cells(r, "F") = adjustNum
                .Cells(r, "F").Font.ColorIndex = 7
                
                Exit For
            
            End If
        
        End If
        
    Next

End With

End Sub




留言

Popular Posts

Excel VBA @ 監造日報表、查驗表 -2

ExcelVBA@施工照片整理的應用範例

Excel VBA@ 監造日報表、查驗表