Chỉnh sửa code tính Diễn giải Khối lượng trong Xây dựng

Liên hệ QC
Bạn xem file đính kèm (cũng từ code trong những bài ở trên, bổ sung tí chút) giải quyết được vấn đề của Bạn:

Anh ơi! em thấy Code của anh edit chạy ok đúng như ý em cần. Anh có thể ra tay giúp thằng em chỉnh cái code này tí được không anh. Em cảm ơn anh trước nhe! Chúc anh sức khỏe!
________________________________________________
P/S:
Code của em cần sửa lỗi này anh:
Code trên còn tồn tại nhược điểm sau:
Khi đả đánh vào:
Móng M1: 1,2*2*3 -> enter ra: 1,2*2*3 = 7,2. Trong quá trình tính toán em edit thì:
- Nếu sửa: Móng M1: 1,1*2*3 (sửa "1,2"->1,1 và xóa "=7,2") thi ra kết quả đúng.
- Nếu sửa: Móng M1:1,1*2*3 = 7,2 thi hiển thị kết quả: Móng M1: 1,1*2*3 = 7,2 = 0,00 (sai) em muốn chi edit biểu thức thì nó tự replece kết quả được không?.
Chúc các bác sức khỏe!
File ở dưới thưa anh.
 

File đính kèm

  • NHO HIEU CHINH CODE TINH DIEN GIAI KHOI LUONG.xlsm
    39.2 KB · Đọc: 11
Anh ơi! em thấy Code của anh edit chạy ok đúng như ý em cần. Anh có thể ra tay giúp thằng em chỉnh cái code này tí được không anh. Em cảm ơn anh trước nhe! Chúc anh sức khỏe!
________________________________________________
P/S:
Code của em cần sửa lỗi này anh:
Code trên còn tồn tại nhược điểm sau:
Khi đả đánh vào:
Móng M1: 1,2*2*3 -> enter ra: 1,2*2*3 = 7,2. Trong quá trình tính toán em edit thì:
- Nếu sửa: Móng M1: 1,1*2*3 (sửa "1,2"->1,1 và xóa "=7,2") thi ra kết quả đúng.
- Nếu sửa: Móng M1:1,1*2*3 = 7,2 thi hiển thị kết quả: Móng M1: 1,1*2*3 = 7,2 = 0,00 (sai) em muốn chi edit biểu thức thì nó tự replece kết quả được không?.
Chúc các bác sức khỏe!
File ở dưới thưa anh.
Tức bạn sửa dữ liệu mà vẫn để dấu "=" thì nó vẫn tính được cho bạn đúng không?
Bạn xem file đúng yêu cầu của bạn chư nhé!
 

File đính kèm

  • NHO HIEU CHINH CODE TINH DIEN GIAI KHOI LUONG.xlsm
    38.1 KB · Đọc: 52
Code trên còn tồn tại nhược điểm sau:
Khi đả đánh vào:
Móng M1: 1,2*2*3 -> enter ra: 1,2*2*3 = 7,2. Trong quá trình tính toán em edit thì:
- Nếu sửa: Móng M1: 1,1*2*3 (sửa "1,2"->1,1 và xóa "=7,2") thi ra kết quả đúng.
- Nếu sửa: Móng M1:1,1*2*3 = 7,2 thi hiển thị kết quả: Móng M1: 1,1*2*3 = 7,2 = 0,00 (sai) em muốn chi edit biểu thức thì nó tự replece kết quả được không?.
Chúc các bác sức khỏe!
File ở dưới thưa anh.
File ở #64 đã đáp ứng được yêu cầu của bạn rồi mà.
Tôi thử trên máy tính của tôi, sửa số, không cần xóa sau dấu =, rồi Enter thì đều ra kết quả đúng. Tôi đã làm vài lần đều được.
Không biết trên máy bạn có thực hiện được như tôi không?
 
Cái bảng tính excel của anh TRANHOE hình như khi số vượt quá 1000 thì không được đúng không anh
 
Sao làm dự toán mà lười quá gõ sum vào là xong mà cũng lười biếng, lười thế này thế nhầm lẫn lém, lại ra thêm cây cầu thiếu trọng tải thì nguy, hihihii (vui chút cho các bạn cẩn trọng)



Muốn lười thì

Copy hết vào sheet code là được (sửa và thêm vào code của bác Siwtom trên)

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim expression As String, Result As Double
    If Not Intersect(Target, Range("A1:A10000")) Is Nothing Then
        If Target.Count = 1 Then
            If Target.Value <> "" Then
                If InStr(Target, ":") > 0 Then
                    expression = Trim(Split(Target.Value, ":")(1))
                Else
                    expression = Trim(Target.Value)
                End If
                expression = Replace(expression, ",", ".")
                Application.EnableEvents = False
                On Error GoTo end_
                Result = Evaluate(expression)     'Target.Offset(, 1).Value = result
                Target.Value = "'" & Trim(Target.Value) & " = " & FormatWithComma(Result)
                ToSumRange Target
            End If
        End If
    End If
end_:
    Application.EnableEvents = True
End Sub

''-----------------------------------------------------------------------
Private Function FormatWithComma(ByVal number As Double) As String
Dim text As String, Result As String
    text = Format(2001 / 2, "#,##0.0")
    Result = Format(number, "#,##0.0##")
    If Mid(text, 6, 1) = "," Then
        FormatWithComma = Replace(Result, Mid(text, 2, 1), ".")
    Else
        Result = Replace(Result, ".", "@")
        Result = Replace(Result, Mid(text, 2, 1), ".")
        FormatWithComma = Replace(Result, "@", ",")
    End If
End Function

''-----------------------------------------------------------------------
Private Sub ToSumRange(taR As Range)
    Dim k  As Long, pos As Long, text As String, Result As Double
    i = 0
    text = taR.Offset(i).Value
    pos = InStr(1, text, "=")
   
    Do While pos > 0
        text = Replace(Replace(Trim(Mid(text, pos + 1)), ".", ""), ",", ".")
        Result = Result + Val(text)
        i = i - 1
        text = taR.Offset(i).Value
        pos = InStr(1, text, "=")
    Loop
    k = i
  
    i = 1
    text = taR.Offset(i).Value
    pos = InStr(1, text, "=")
   
    Do While pos > 0
        text = Replace(Replace(Trim(Mid(text, pos + 1)), ".", ""), ",", ".")
        Result = Result + Val(text)
        i = i + 1
        text = taR.Offset(i).Value
        pos = InStr(1, text, "=")
    Loop
   
    taR.Offset(k, 2) = Result
End Sub


Bác vodoi2x à, theo code này của bác cũng tốt rồi, nhưng mình thấy có điều là hàm tự cộng nó căn cứ vào chính cái cột đang chứa phép tính (File mình up là cột C). Nếu có diễn giải bằng ký tự khác số là nó tự ngắt tổng. Nếu mình muốn chỉ khi nào STT ở cột A thay đổi thì mới ngắt tính tổng. Nếu STT chưa thay đổi thì tính tổng vẫn tiếp tục cộng dồn thì phải sửa code như thế nào ? (xin xem file đính kèm)

Cảm ơn đã đọc bài.
 

File đính kèm

  • Vi du.xls
    33 KB · Đọc: 18
Chào cả nhà. Em nhờ bác @Tranhoe xem giúp em cái bảng giải trình khối lượng đính kèm này với ạ. cái mục Ống D16 thì vẫn còn công thức tổng, mà sao mục ống D20 vẫn dùng công thức đấy nhưng sau khi enter thì chỉ còn kết quả chứ ko còn công thức là sao ạ. Chân trọng cám ơn bác và cả nhà
 

File đính kèm

  • Bảng diễn giải khối lượng ống.xls
    60.5 KB · Đọc: 15
Web KT
Back
Top Bottom