Trên diễn đàn có đoạn code:
Public Function Gtr(Dulieu As String, Optional Pcach = ",")
Dim i, temp
If Len(Dulieu) = 0 Then Exit Function
Dulieu = Replace(Dulieu, Pcach, "")
Dulieu = Replace(Dulieu, ",", ".")
For i = 1 To Len(Dulieu)
Select Case Mid(Dulieu, i, 1)
Case "x": temp = temp & "*"
Case ":": temp = temp & "/"
Case "+", "-", "*", "/", "(", ")", ".", 0 To 9: temp = temp & Mid(Dulieu, i, 1)
End Select
Next i
For i = 1 To Len(Dulieu)
Select Case Right(temp, 1)
Case "-", "+", "*", "/": temp = Left(temp, Len(temp) - 1)
End Select
Next
Gtr = Evaluate(temp)
End Function
Ở đoạn code trên chỉ đúng với trường hợp là ô B2 có công thức "=gtri(A2)" mà A2 là "công sơn lót= 2m * 6m * 2 lần" gồm cả số lẫn chữ trong đó.
Đoạn code sẽ lọc các con số để tính toán, còn chữ thì bỏ qua.
Nhưng nếu trường A2 là “ công sơn lót: 2m* 6m *2lần “ hoặc A2 là “ Xây tường 200: (6*0.2*3.3-1.2*2.8)*2 “ hoặc A2 là “ : 6*1.2/100 “ thì đoạn code trên phải viết lại như thế nào?
Mong các Anh Chị trên diễn đàn giúp em nhé!
Public Function Gtr(Dulieu As String, Optional Pcach = ",")
Dim i, temp
If Len(Dulieu) = 0 Then Exit Function
Dulieu = Replace(Dulieu, Pcach, "")
Dulieu = Replace(Dulieu, ",", ".")
For i = 1 To Len(Dulieu)
Select Case Mid(Dulieu, i, 1)
Case "x": temp = temp & "*"
Case ":": temp = temp & "/"
Case "+", "-", "*", "/", "(", ")", ".", 0 To 9: temp = temp & Mid(Dulieu, i, 1)
End Select
Next i
For i = 1 To Len(Dulieu)
Select Case Right(temp, 1)
Case "-", "+", "*", "/": temp = Left(temp, Len(temp) - 1)
End Select
Next
Gtr = Evaluate(temp)
End Function
Ở đoạn code trên chỉ đúng với trường hợp là ô B2 có công thức "=gtri(A2)" mà A2 là "công sơn lót= 2m * 6m * 2 lần" gồm cả số lẫn chữ trong đó.
Đoạn code sẽ lọc các con số để tính toán, còn chữ thì bỏ qua.
Nhưng nếu trường A2 là “ công sơn lót: 2m* 6m *2lần “ hoặc A2 là “ Xây tường 200: (6*0.2*3.3-1.2*2.8)*2 “ hoặc A2 là “ : 6*1.2/100 “ thì đoạn code trên phải viết lại như thế nào?
Mong các Anh Chị trên diễn đàn giúp em nhé!