Dùng cách gì để điền kết quả vào chính ô dữ liệu diễn giải đầu vào

Liên hệ QC

Dauthivan

Thành viên tiêu biểu
Tham gia
15/8/08
Bài viết
565
Được thích
327
Em xin cảm ơn mọi người trên diễn đàn đã giúp em tìm hiểu về VBA, nhờ các tình huống trên diễn đàn mà em được các anh, chị và các thày chỉ bảo đến nay em đã hiểu được một số vấn đề và đã có thể tự đặt các tình huống cũng như đã tự giải được một số bải toán đơn giản nhất.

Em có tình huống sau mà em hay gặp thường ngày, cái này em thấy phần mềm dự toán xây dựng làm được, nhưng em chưa biết được hướng giải quyết như thế nào, cụ thể như sau ah:

Em bóc khối lượng dự toán hay gặp trường hợp phải diễn giải khối lượng. Em thương có bài toán cột A là cột diễn giải khối lượng:
Ví dụ ô A1 nội dung diễn giải là (5+3)*2. Yêu cầu bài toán làm sao cho sau khi chạy VBA lập tức nội dung ô A1 sẽ là: (5+3)*2=16

Tức là thực chất kết quả sẽ thay thế (đè lên chính ô đó) nhưng có thêm phần kết quả sau dấu bằng.
 

File đính kèm

Em xin cảm ơn mọi người trên diễn đàn đã giúp em tìm hiểu về VBA, nhờ các tình huống trên diễn đàn mà em được các anh, chị và các thày chỉ bảo đến nay em đã hiểu được một số vấn đề và đã có thể tự đặt các tình huống cũng như đã tự giải được một số bải toán đơn giản nhất.

Em có tình huống sau mà em hay gặp thường ngày, cái này em thấy phần mềm dự toán xây dựng làm được, nhưng em chưa biết được hướng giải quyết như thế nào, cụ thể như sau ah:

Em bóc khối lượng dự toán hay gặp trường hợp phải diễn giải khối lượng. Em thương có bài toán cột A là cột diễn giải khối lượng:
Ví dụ ô A1 nội dung diễn giải là (5+3)*2. Yêu cầu bài toán làm sao cho sau khi chạy VBA lập tức nội dung ô A1 sẽ là: (5+3)*2=16

Tức là thực chất kết quả sẽ thay thế (đè lên chính ô đó) nhưng có thêm phần kết quả sau dấu bằng.
Cái này cũng có thể dùng công thức được (bằng cách đặt name =Evaluate(...)...) đã nói nhiều lần rồi
Còn dùng code VBA thì thử cái này xem
PHP:
Function ValExp(ByVal Exp As String)
  Dim Tmp As String, Res
  On Error Resume Next
  Tmp = Replace(Exp, "[", "(")
  Tmp = Replace(Tmp, "]", ")")
  Tmp = Replace(Tmp, "{", "(")
  Tmp = Replace(Tmp, "}", ")")
  Tmp = Replace(Tmp, "x", "*")
  Tmp = Replace(Tmp, ":", "/")
  Tmp = Replace(Tmp, " ", "")
  With CreateObject("VBScript.RegExp")
    .Global = True: .Pattern = "[^0-9 + - * / . ( )]"
    Res = Evaluate(.Replace(Tmp, ""))
  End With
  ValExp = Res
End Function
Không chắc sẽ áp dụng được trong mọi trường hợp đâu!
Bạn cứ test, trục trặc đến đâu ta sửa đến nấy
 
Upvote 0
Web KT

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

Back
Top Bottom