Hàm tính giá trị biểu thức DValue

Liên hệ QC

tedaynui

(*_*)
Thành viên danh dự
Tham gia
12/8/06
Bài viết
1,875
Được thích
2,475
Đô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
 

File đính kèm

  • DValue.zip
    16.4 KB · Đọc: 3,514
Lần chỉnh sửa cuối:
Ko mo duoc file kem

Lạ nhỉ, mình mở file ra xem nhưng sao ko mở được. File báo macro.
 
Lãm Lan đã viết:
Lạ nhỉ, mình mở file ra xem nhưng sao ko mở được. File báo macro.
Bạn chọn Menu Tools / Macro / Security... sau đó chọn mục Low. Nếu chọn mục Medium thì khi mở file bạn chọn Enable Macros.
TDN
 
Đề nghị tác giả viết hàm xác định Định thức ma trận đại số luôn cái nha!
(ảm ơn trước! VD: {2a, 5; b-1, a}
 
Rất cảm ơn bạn về bài viết này. Tôi không biết gì về VB và giờ đây tôi muốn bạn thêm một số hàm (VD sqrt, pi(), sin, cos, ln, hàm mũ ... và bỏ đi không nhận dấu ":", chữ "x", dấu "phẩy" bên phím số được không
 
Thắc mắc Dvalue

moz-screenshot.jpg
Tôi bị lỗi này khi dùng dvalue. anh em giúp với. cò kèm theo hình đây+-+-+-+
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    70.2 KB · Đọc: 1,067
đã tự giai đáp được thắc mắc lỗi dvalue

Cái này bạn nào cài offcie mà bỏ qua ko cài thằng Acess lên thì nó báo lỗi như mình đã nêu. mình đã thử trên 3 máy tính khác nhau và cho kết quả liền . Mất nữa buổi sáng mới tìm ra được +-+-+-+

Cảm ơn các bạn đã trợ giúp--=0

Mình vẫn lấy file cũ trênđ đàn đó bạn tedaynui à! Thanhks

Bạn test lại thử với file XLS này xem sao

TDN
 
Nhờ bạn tiếp Dvalue

khi mình làm khối lượng có chồ này muốn nhờ bạn xem


Ở đây hàm của bạn hiểu là Dầm móng 1 : 12 rồi nhân với 3 = 0.0625;

nhưng mình muốn Dầm móng 1: là một text12*3*0.5*0.5 là một phép tính để chỉ cách tính toán nhiều dầm móng trong 1 bản vẽ nhà. +-+-+-+
 

File đính kèm

  • Ham dvalue.xls
    16 KB · Đọc: 261
Hàm này không được các bác ơi! Tôi tải về và thử giá trị như:
2*14 thì đúng bằng 28
Nhưng với giá trị mũ như : 2^3+16 thì ra kết qura trật lất. Có bác nào giúp tôi không?
 
Hàm này không được các bác ơi! Tôi tải về và thử giá trị như:
2*14 thì đúng bằng 28
Nhưng với giá trị mũ như : 2^3+16 thì ra kết qura trật lất. Có bác nào giúp tôi không?
Vậy bạn làm lại với Addins này xem có thêm được gì không nha!
Em đã dùng công thứ củ chỉ bổ sung thêm tính năng mũ số thôi!
Thân.
 

File đính kèm

  • DValue3.rar
    7.7 KB · Đọc: 930
Bạn tedaynui ơi... sao mình đã chép code của bạn về rồi nhưng mình thực hành trên file excell của mình ko được, còn trên file excel của bạn thì được (Dvalue) bạn chỉ giúp dùm mình với, tại vì về VBA mình ko rành lắm. Thanks . Chúc bạn có 1 ngày thật vui vẽ & Hạnh phúc ....
 
Bạn nhấp đúp chuột lên file của mình. Rồi mở tài liệu của bạn ra nhập công thức =DValue(C7) với C7 là 1 chuổi có dạng "5*6+7^2". Vậy thôi.
Còn nếu không chạy gì hết thì bạn xem lại xem đã mở Low cho Sercurity chưa.
Bạn vào Tools -> Macro -> Security -> chọn Low -> OK.
Rồi khởi động lại.
Thân.
 
Mình đã làm gống bạn rồi nhưng mà dòng code báo là Dvalue = Eval (sent) nên ko tính được
---------------------------
Microsoft Visual Basic
---------------------------
Compile error:

Sub or Function not defined
---------------------------
OK Help
---------------------------
báo lỗi vậy là sao vậy bạn, giúp dùm mình với. Thanks...
 
Đây là dòng code...
PHP:
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
 
Chỉnh sửa lần cuối bởi điều hành viên:
Code này phải như vầy:
PHP:
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
                Case "^"
                    Sent = Sent & "^"
            End Select
        End If
    Next
    DValue = Application.Evaluate(Sent)
End Function
Hoặc bạn Download lại với file DValue3.rar đi.
Mình thấy file này ổn hơn.
Thân.
 
Web KT
Back
Top Bottom