-
Chuyển công thức ở chuỗi text thành hàm trong Excel
Noname > 23-05-19, 11:53 AM
Đô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.
Đầ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
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à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(r 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(r As Range)
For Each cl In r
If cl <> "" Then
Sum2T = Sum2T & cl.value & "+"
End If
Next
Sum2T = Left(Sum2T, Len(Sum2T) - 1)
End Function
-
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