Hàm tính 1 chuỗi con

Liên hệ QC

thuongsykxps

Thành viên chính thức
Tham gia
3/6/08
Bài viết
67
Được thích
20
Em có 1 vấn đề mong anh chị giúp em. Em xin cảm ơn trước.
Giả sử ớ cột A
A B
9*8*7 (ở đây lập công thức để tính text ở cột A)
9*8*9
Ý em là muốn lập công thức chứ không dùng Ctrl+F3 (Define Name =evaluate).
Mình có thể lập công thức như thế nào. Nếu viết bằng VBA củng được.
Nó vừa tách số và thực thi phép tính luôn (+,-,*,/) (vd: tách ra được 2*3 thì nó tính bằng 6 luôn) Chứ đoạn code trên chỉ tách đươc số thôi.
Mong anh chị giúp em. Em cảm ơn nhiều.​
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn chép code vào ( của các cao thủ GPE trên diển đàn mình xin lỗi không nhớ bài của ai ?, xin phép giúp bạn )
Function CtoN(Mystr As String, Optional Dautp As String) As Double
Dim Kqng, Kqtp, Neg As Double, Kqtam As String
Dim Sotp As Double, Le As Byte
Neg = 1
Le = 0
For i = 1 To Len(Mystr)
tam = Mid(Mystr, i, 1)
Select Case tam
Case 0 To 9
Kqtam = Kqtam & tam
Case "-"
Neg = -1
Case Dautp
Kqng = Kqtam
Le = 1
Mystr = Right(Mystr, Len(Mystr) - i)
Kqtp = CtoN(Mystr)
Sotp = Kqtp * 10 ^ (-Len(Kqtp))
End Select
Next i
Select Case Le
Case 0
CtoN = IIf(Kqtam = "", 0, Kqtam)
Case 1
CtoN = Kqng + Sotp
End Select
CtoN = CtoN * Neg
End Function
 
Em có 1 vấn đề mong anh chị giúp em. Em xin cảm ơn trước.
Giả sử ớ cột A
A B
9*8*7 (ở đây lập công thức để tính text ở cột A)
9*8*9
Ý em là muốn lập công thức chứ không dùng Ctrl+F3 (Define Name =evaluate).
Mình có thể lập công thức như thế nào. Nếu viết bằng VBA củng được.
Nó vừa tách số và thực thi phép tính luôn (+,-,*,/) (vd: tách ra được 2*3 thì nó tính bằng 6 luôn) Chứ đoạn code trên chỉ tách đươc số thôi.
Mong anh chị giúp em. Em cảm ơn nhiều.​
Dùng hàm này xem:
PHP:
Function ValExp(Cell As Range) As String
  Dim Temp
  With CreateObject("VBScript.RegExp")
    .Global = True
    Temp = Replace(Cell, "[", "(")
    Temp = Replace(Temp, "]", ")")
    Temp = Replace(Temp, "{", "(")
    Temp = Replace(Temp, "}", ")")
    Temp = Replace(Temp, "x", "*")
    .Pattern = "[^0-9+.*/()-]"
    ValExp = Evaluate(.Replace(Temp, ""))
  End With
End Function
 

File đính kèm

Càm ơn cậu, code dùng rất hay. Thanked.
 
Web KT

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

Back
Top Bottom