cần giúp về kết hợp 2 code với nhau (1 người xem)

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

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

lminhv

Thành viên mới
Tham gia
8/1/11
Bài viết
7
Được thích
4
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,
Đô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 :

Mã:
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
TDN
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:
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:
Web KT

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

Back
Top Bottom