Chào các bác!
theo bài viết trên topic http://www.giaiphapexcel.com/forum/...-giá-trị-biểu-thức-DValue&p=594405#post594405
em hỏi về cách gộp 2 code lại với nhau,
ý nghĩa là :
---------A---------------------------B---------------giá trị trả về
--- "tổng thu: 6*10+5/5" ---------=tt(A1) --------- 61
Hiện tại em muốn kết hợp code DValue và code tt thành 1 code (lấy tên là tt1) thôi, có diễn giải trước khi ghi tính toán thì làm thế nào vậy, mong các bác giúp em với
ví dụ ý em mong muốn sau khi kết hợp:
---------A---------------------------B---------------giá trị trả về
--- "tổng thu: 6*10đ+5đ/5" ---------=tt1(A1) --------- 61
mong các bác giúp nhé, xin chân thành cảm ơn
theo bài viết trên topic http://www.giaiphapexcel.com/forum/...-giá-trị-biểu-thức-DValue&p=594405#post594405
em hỏi về cách gộp 2 code lại với nhau,
anh tedaynui đã chia xẻ code rất hay, em muốn gắn thêm diễn giải phần tính thì em đã có đoạn code ngắn gọn sau:Đôi khi ta có những biểu thức có số lẫn chữ và ta muốn tính giá trị của biểu thức đó. Ta dùng hàm DValue, cú pháp : DValue(Biểu_Thức)
Ví dụ :
---------A---------------------------B---------------giá trị trả về
1.-- "6 cái x 10đ" --------------- =DValue(A1) --------- 60
2.-- "5m x 20m" ---------------- =DValue(A2) --------- 100
3.-- "(2hàng+3hàng)*10người" -- =DValue(A3) --------- 50
4.-- "60người : 2 xe" ----------- =Dvalue(A4) ---------- 30
Phép tính nhân có thể là dấu * hoặc x
Phép tính chia có thể là dấu / hoặc :
TDNMã:Public Function DValue(Expr) Char = Expr Sent = Space(0) ABC = "0123456789+-*/()." & Space(1) XYZ = "0123456789" & Space(1) For m = 2 To 3 Met = "m" & m Temp = InStr(1, Char, Met) Do While Temp > 0 If Temp > 0 Then Char = Left(Char, Temp) & Mid(Char, Temp + 2) End If Temp = InStr(1, Char, Met) Loop Next For i = 1 To Len(Char) KyTu = Mid(Char, i, 1) If InStr(1, ABC, KyTu) > 0 Then Sent = Sent & KyTu Else Select Case KyTu Case ":" Left_ = Mid(Char, i - 1, 1) Right_ = Mid(Char, i + 1, 1) If InStr(1, XYZ, Right_) > 0 Then Sent = Sent & "/" End If Case "," Sent = Sent & "." Case "%" Sent = Sent & "/100" Case "x", "X" Left_ = Mid(Char, i - 1, 1) Right_ = Mid(Char, i + 1, 1) If InStr(1, XYZ, Right_) > 0 Then Sent = Sent & "*" End If End Select End If Next DValue = Eval(Sent) End Function
Mã:
Function tt(Mystr As String, Optional Dautp As String) As Double
Dim i As Integer
Dim s As String
i = InStr(1, Mystr, ":")
s = Right(Mystr, Len(Mystr) - i)
tt = Evaluate("=" & s) 'lenh tt = dien giai khoi luong: number +-*/ number
End Function
ý nghĩa là :
---------A---------------------------B---------------giá trị trả về
--- "tổng thu: 6*10+5/5" ---------=tt(A1) --------- 61
Hiện tại em muốn kết hợp code DValue và code tt thành 1 code (lấy tên là tt1) thôi, có diễn giải trước khi ghi tính toán thì làm thế nào vậy, mong các bác giúp em với
ví dụ ý em mong muốn sau khi kết hợp:
---------A---------------------------B---------------giá trị trả về
--- "tổng thu: 6*10đ+5đ/5" ---------=tt1(A1) --------- 61
mong các bác giúp nhé, xin chân thành cảm ơn
Lần chỉnh sửa cuối: