Vba không tính được hàm sqrt trong công thức excel (1 người xem)

Liên hệ QC

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

zerocoldtn

Thành viên hoạt động
Tham gia
2/6/16
Bài viết
148
Được thích
7
- Trong file có sẵn code tính, nhưng code vba không tính được hàm sqrt trong công thức excel. Mong các AC trên GPE tìm giải pháp!
 

File đính kèm

Lần chỉnh sửa cuối:
Máy tôi thiết lập dấu phẩy là dấu thập phân nên chắc chắn có lỗi vì lúc đó
s = 5+2+6-2*sqrt(2+4,56*6,78) do Mid(1 / 2, 2, 1) trả về dấu thập phân trong CP, mà Evaluate dùng dấu chấm.

Phải luôn luôn chuyển "," thành dấu chấm. Tức
Mã:
Public Function DG(s As String)
s = Trim(Mid(s, InStr(s, ":") + 1))
s = Replace(s, ",", ".")
DG = Evaluate(s)
End Function

Tất nhiên hàm tổng quát phải viết khác. Vd. ô = ab: 5+2+6-2xsqrt(2+4,56x6,78) thì có lỗi.
 
Không phải không tính được căn mà do chuoi làm gì có SQRT?
Nhìn
Mã:
Select Case Asc(Mid(Txt, i, 1))
    Case 40 To 57, 94
        chuoi = chuoi & Mid(Txt, i, 1)
End Select
là biết bạn bỏ qua tất cả các chữ cái, trong đó có s, q, r, t. Vậy tiếp theo cho tới hết cuộc chơi thì chuoi không chứa SQRT.

Có thể sửa vd. Thay cụm For ... Next bằng
Mã:
Txt = Replace(Txt, "sqrt", "#", , , vbTextCompare)
For i = 1 To Len(Txt)
    Select Case Asc(Mid(Txt, i, 1))
        Case 40 To 57, 94, 35
            chuoi = chuoi & Mid(Txt, i, 1)
    End Select
Next i
chuoi = Replace(chuoi, "#", "sqrt")

Tất nhiên bạn không mô tả các dạng dữ liệu nên tôi không biết bạn có xét hết các trường hợp hay không. Nhưng nếu nói về SQRT thì như thế.
 
Web KT

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

Back
Top Bottom