• Chuyển công thức ở chuỗi text thành hàm trong Excel
  • Chuyển công thức ở chuỗi text thành hàm trong Excel

    Noname > 23-05-19, 11:53 AM

    [Hình: Chuyen-cong-thuc-thanh-ham-excel-680x350.webp]

    Đôi khi ta có nhu cầu tính toán giá trị của công thức nằm trong 1 text, Ta có thể viết 1 hàm để sử dụng. Bài toán như bên dưới. 
    [Hình: Chuyen-cong-thuc-thanh-ham-excel-1.webp]

    Đầu tiên ta tạo 1 module để viết hàm bằng cách nhấn tổ hợp phím ALT+F11
    Tạo 1 module mới
    [Hình: Chuyen-cong-thuc-thanh-ham-excel-2.webp]

    Dán đoạn code sau vào
    Mã:
    Function Eval(Ref As String)
    Application.Volatile
    Eval = Evaluate(Ref)
    End Function

    Lưu lại và trở về màn hình làm việc của Excel

    Tại cột kết quả bạn thực hiện hàm : =Eval(ô cần tính)

    Giờ thì bạn có thể tận hưởng thành quả. Chúc bạn thành công !
  • RE: Chuyển công thức ở chuỗi text thành hàm trong Excel

    Xuân Thanh > 05-06-19, 08:16 AM

    Mở rộng hàm của NoName để áp dụng cho nhiều trường hợp

    Mã:
    Option Explicit
    Const Dau = "{}[]()+-*/^"

    Function GiaTri(strChuoi As String)
        Application.Volatile
        Dim i As Long, j As Long, KQ As String
        KQ = ""
        strChuoi = Trim(strChuoi)
        For i = 1 To Len(strChuoi)
            If IsNumeric(Mid(strChuoi, i, 1)) = True Then
                KQ = KQ & Mid(strChuoi, i, 1)
            End If
            For j = 1 To Len(Dau)
                If Mid(strChuoi, i, 1) = Mid(Dau, j, 1) Then
                    KQ = KQ & Mid(Dau, j, 1)
                End If
            Next
        Next
        GiaTri = Evaluate(KQ)
    End Function


    Ví dụ

    strChuoi = 5người * (5em -2em)    ====>   GiaTri = 15
    strChuoi = 5^2+3^2     ====    GiaTri = 34
  • RE: Chuyển công thức ở chuỗi text thành hàm trong Excel

    Noname > 29-02-20, 04:54 PM

    Hôm trước giới thiệu chuyển chuỗi thành hàm, Hôm nay giới thiệu các bạn công thức diễn giải hàm thành chuỗi. Bạn nào làm dự toán, thanh quyết toán các công trình xây dựng sẽ thấy ứng dụng của hàm này
    Chi tiết thì xem thêm trên trang microsoft

    Phát biểu:
    Mã:
    FORMULATEXT(ô có chứa công thức)

    [Hình: EbLFtgP.png]

    Hàm này chỉ áp dụng cho Excel 2013 trở lên, nên các bạn xài Excel 2010 về trước muốn dùng có thể tạo hàm bằng cách nhấn Alt+F11
    Tạo module, dán code sau vào:
    Mã PHP:
    Function FORMULATEXT(As Range)
    FORMULATEXT r.Formula
    End 
    Function 
  • RE: Chuyển công thức ở chuỗi text thành hàm trong Excel

    Noname > 19-03-20, 03:28 PM

    Nâng cao thêm 1 bước, viết 1 hàm diễn giải nội dung hàm Sum, mục tiêu giống như hàm FORMULATEXT

    SUM2T(vùng tính): Trả về 1 chuỗi gồm các ô trong trong vùng tính dạng: giá trị ô 1+giá trị ô 2...

    Dùng nhiều trong bảng thuyết minh khối lượng trong công tác kiểm đếm khối lượng theo lô, tầng, vùng...
    Tạo module, copy hàm sau vào là dùng được

    Mã PHP:
    Function Sum2T(As Range)
    For 
    Each cl In r
        
    If cl <> "" Then
        Sum2T 
    Sum2T cl.value "+"
        
    End If
    Next
    Sum2T 
    Left(Sum2TLen(Sum2T) - 1)
    End Function 

    [Hình: SrKJkws.png]
  • RE: Chuyển công thức ở chuỗi text thành hàm trong Excel

    gobi > 19-01-21, 04:43 PM

    (05-06-19, 08:16 AM)Xuân Thanh Đã viết: Mở rộng hàm của NoName để áp dụng cho nhiều trường hợp

    Mã:
    Option Explicit
    Const Dau = "{}[]()+-*/^"

    Function GiaTri(strChuoi As String)
        Application.Volatile
        Dim i As Long, j As Long, KQ As String
        KQ = ""
        strChuoi = Trim(strChuoi)
        For i = 1 To Len(strChuoi)
            If IsNumeric(Mid(strChuoi, i, 1)) = True Then
                KQ = KQ & Mid(strChuoi, i, 1)
            End If
            For j = 1 To Len(Dau)
                If Mid(strChuoi, i, 1) = Mid(Dau, j, 1) Then
                    KQ = KQ & Mid(Dau, j, 1)
                End If
            Next
        Next
        GiaTri = Evaluate(KQ)
    End Function


    Ví dụ

    strChuoi = 5người * (5em -2em)    ====>   GiaTri = 15
    strChuoi = 5^2+3^2     ====    GiaTri = 34

    em đã áp dụng đoạn mã này. nhưng khi chung số lẻ thì nó bỏ luôn dấu phẩy, làm sai kết quả. em không phải dân lập trình, nhờ a chỉnh lại mã để em có thể dùng với số lẻ. vd: 0,14*0,5*8 . cảm ơn anh nhiều ạ!
  • RE: Chuyển công thức ở chuỗi text thành hàm trong Excel

    Noname > 25-01-21, 11:24 AM

    (19-01-21, 04:43 PM)gobi Đã viết:
    (05-06-19, 08:16 AM)Xuân Thanh Đã viết: Mở rộng hàm của NoName để áp dụng cho nhiều trường hợp

    Mã:
    Option Explicit
    Const Dau = "{}[]()+-*/^"

    Function GiaTri(strChuoi As String)
        Application.Volatile
        Dim i As Long, j As Long, KQ As String
        KQ = ""
        strChuoi = Trim(strChuoi)
        For i = 1 To Len(strChuoi)
            If IsNumeric(Mid(strChuoi, i, 1)) = True Then
                KQ = KQ & Mid(strChuoi, i, 1)
            End If
            For j = 1 To Len(Dau)
                If Mid(strChuoi, i, 1) = Mid(Dau, j, 1) Then
                    KQ = KQ & Mid(Dau, j, 1)
                End If
            Next
        Next
        GiaTri = Evaluate(KQ)
    End Function


    Ví dụ

    strChuoi = 5người * (5em -2em)    ====>   GiaTri = 15
    strChuoi = 5^2+3^2     ====    GiaTri = 34

    em đã áp dụng đoạn mã này. nhưng khi chung số lẻ thì nó bỏ luôn dấu phẩy, làm sai kết quả. em không phải dân lập trình, nhờ a chỉnh lại mã để em có thể dùng với số lẻ. vd: 0,14*0,5*8 . cảm ơn anh nhiều ạ!

    Bạn chỉnh lại để excel , vào file=> advance=> use system separator, dấu ngăn cách phần ngàn, phân cách hàng thập phân. Chấm thành phẩy và phẩy thành chấm sẽ khắc phục được