Xin trợ giúp về diễn giải khối lượng sử dụng Hàm Evaluate (4 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

emconnhaxd

Thành viên chính thức
Tham gia
10/1/10
Bài viết
51
Được thích
0
Khi sử dụng Evaluate mình đánh biểu thức "5*6*7" thì hàm có thể tính kết quả
Khi mình đánh " Bê tông cột: 5*6*7" thì hàm không hiểu
Xin mọi người khắc phục giúp
 

File đính kèm

ad giúp với nhé, đang mắc vụ này
 
Bạn nháy chọn ô C7 và sửa name KL lại như sau:
Mã:
=EVALUATE(IFERROR(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-FIND(":", 'Tinh khoi luong'!B7)-1),'Tinh khoi luong'!B7))
hoặc
Mã:
=EVALUATE(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-IFERROR(FIND(":", 'Tinh khoi luong'!B7),-1)-1))
 
Lần chỉnh sửa cuối:
Khi sử dụng Evaluate mình đánh biểu thức "5*6*7" thì hàm có thể tính kết quả
Khi mình đánh " Bê tông cột: 5*6*7" thì hàm không hiểu
Xin mọi người khắc phục giúp
Chia sẻ với các bạn file tôi đã được trợ giúp. Chắc trong Dự toán cũng cần phải có code để tính toán chứ không đơn thuần là hàm EVALUATE.
 

File đính kèm

File của bạn khá hay. mình se thử xem nó thế nào rồi mình hỏi lại
CHia sẻ với bạn code mình được bạn quanluu1989 giúp nè
http://www.giaiphapexcel.com/forum/showthread.php?117383-Nh%E1%BB%9D-gi%C3%BAp-vi%E1%BA%BFt-code-t%C3%ADnh-to%C3%A1n/page3
Xem bài 28 nhé
Code đó đây :
Mã:
[COLOR=#000000][I]Function ValueEval(rng As String)[/I][/COLOR]Dim i As Integer
Dim strTemp As String
rng = Application.Trim(Right(rng, Len(rng) - InStr(rng, ":")))
rng = Replace(rng, "m2", "")
rng = Replace(rng, "m3", "")


For i = 1 To Len(rng)
    Select Case Asc(Mid(rng, i, 1))
    Case 40 To 57, 94
        strTemp = strTemp & Mid(rng, i, 1)
    End Select
Next i


strTemp = Replace(strTemp, ",", ".")
strTemp = Replace(strTemp, "/*", "*")
strTemp = Replace(strTemp, "/+", "+")
strTemp = Replace(strTemp, "/-", "-")
strTemp = Replace(strTemp, "//", "/")
If Right(strTemp, 1) = "/" Then strTemp = Left(strTemp, Len(strTemp) - 1)
ValueEval = Evaluate(strTemp) [COLOR=#000000][I]End Function[/I][/COLOR]
 
Bạn nháy chọn ô C7 và sửa name KL lại như sau:
Mã:
=EVALUATE(IFERROR(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-FIND(":", 'Tinh khoi luong'!B7)-1),'Tinh khoi luong'!B7))
hoặc
Mã:
=EVALUATE(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-IFERROR(FIND(":", 'Tinh khoi luong'!B7),-1)-1))
Kiểm tra giúp mình tại sao sheet 1 không được mà sheet 2 lại được nhé
 

File đính kèm

Bạn nháy chọn ô C7 và sửa name KL lại như sau:
Mã:
=EVALUATE(IFERROR(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-FIND(":", 'Tinh khoi luong'!B7)-1),'Tinh khoi luong'!B7))
hoặc
Mã:
=EVALUATE(RIGHT('Tinh khoi luong'!B7,LEN('Tinh khoi luong'!B7)-IFERROR(FIND(":", 'Tinh khoi luong'!B7),-1)-1))
Mình làm nhưng lỗi không sửa được
 

File đính kèm

CHia sẻ với bạn code mình được bạn quanluu1989 giúp nè
http://www.giaiphapexcel.com/forum/showthread.php?117383-Nh%E1%BB%9D-gi%C3%BAp-vi%E1%BA%BFt-code-t%C3%ADnh-to%C3%A1n/page3
Xem bài 28 nhé
Code đó đây :
Mã:
[COLOR=#000000][I]Function ValueEval(rng As String)[/I][/COLOR]Dim i As Integer
Dim strTemp As String
rng = Application.Trim(Right(rng, Len(rng) - InStr(rng, ":")))
rng = Replace(rng, "m2", "")
rng = Replace(rng, "m3", "")


For i = 1 To Len(rng)
    Select Case Asc(Mid(rng, i, 1))
    Case 40 To 57, 94
        strTemp = strTemp & Mid(rng, i, 1)
    End Select
Next i


strTemp = Replace(strTemp, ",", ".")
strTemp = Replace(strTemp, "/*", "*")
strTemp = Replace(strTemp, "/+", "+")
strTemp = Replace(strTemp, "/-", "-")
strTemp = Replace(strTemp, "//", "/")
If Right(strTemp, 1) = "/" Then strTemp = Left(strTemp, Len(strTemp) - 1)
ValueEval = Evaluate(strTemp) [COLOR=#000000][I]End Function[/I][/COLOR]
Sai link bạn ơi, ko vô dc
 
Web KT

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

Back
Top Bottom