hiện số trong công thức tính toán (1 người xem)

Liên hệ QC

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

phan_huythai

Thành viên chính thức
Tham gia
15/9/12
Bài viết
60
Được thích
1
anh chị viết giùm em cái lệnh mà khi mình chỉ cần gõ lệnh và công thức tính toán thì nó hiện ra số. để khi mình trình bày thì nó trực quan hơn. Cám ơn anh chị nhiều!
 

File đính kèm

anh chị viết giùm em cái lệnh mà khi mình chỉ cần gõ lệnh và công thức tính toán thì nó hiện ra số. để khi mình trình bày thì nó trực quan hơn. Cám ơn anh chị nhiều!
Đề tài này nhiều vô kể trên diễn đàn rồi đó bạn ạ. Nếu bạn chịu có tìm trên này!
Bạn có thể tham khảo đoạn code này của thành viên GPX:
Option Explicit
Public Function Diengiai(rngData As Range)
Dim strText As String, strText2 As String
Dim i As Long, j As Long, dem As Long
Dim subText() As String, dau() As String
Dim Res As Double
If rngData = "" Then Exit Function
strText = rngData.Formula

For i = 1 To Len(strText)
Select Case Mid(strText, i, 1)
Case "+", "-", "*", "/", "^"
ReDim Preserve dau(j)
dau(j) = Mid(strText, i, 1)
j = j + 1
End Select
Next i

strText = Replace(strText, "=", "")
strText = Replace(strText, "+", "@")
strText = Replace(strText, "-", "@")
strText = Replace(strText, "*", "@")
strText = Replace(strText, "/", "@")
strText = Replace(strText, "\", "@")
strText = Replace(strText, "^", "@")

strText = Trim(strText)

subText = Split(strText, "@")
For i = 0 To UBound(subText)
On Error Resume Next
If Not IsNumeric(subText(i)) Then
Err.Clear
Res = Application.WorksheetFunction.Find("(", subText(i))
If Err.Number = 0 Then
dem = 0
For j = 1 To Len(subText(i))
If Mid(subText(i), j, 1) = "(" Then dem = dem + 1
Next j
subText(i) = Replace(subText(i), "(", "")
If IsNumeric(subText(i)) Then
subText(i) = String(dem, "(") & subText(i)
Else
subText(i) = String(dem, "(") & Range(subText(i)).Value
End If
End If

Err.Clear
Res = Application.WorksheetFunction.Find(")", subText(i))
If Err.Number = 0 Then
dem = 0
For j = 1 To Len(subText(i))
If Mid(subText(i), j, 1) = ")" Then dem = dem + 1
Next j
subText(i) = Replace(subText(i), ")", "")
If IsNumeric(subText(i)) Then
subText(i) = subText(i) & String(dem, ")")
Else
subText(i) = Range(subText(i)).Value & String(dem, ")")
End If
End If

subText(i) = Range(subText(i)).Value

End If
Next i

ReDim Preserve dau(UBound(subText))
For i = 0 To UBound(subText)
strText2 = strText2 & subText(i) & dau(i)
Next i

Diengiai = "=" & strText2
End Function
 
Upvote 0
nhưng cái này mình có 1 số cái thác mắc là:
1/ vd mình có số 1.35654754455+454.456547567 thì khi mình =diengiai() thì nó hiện ra số rất dài. mình muốn nó chỉ hiện ra 3 số thập phân thôi.
2/ khoảng cách giữa giấu và chữ gần nhau quá. mình muốn nó xa ra chút
vd: 123.344 + 5445
 
Upvote 0
nhưng cái này mình có 1 số cái thác mắc là:
1/ vd mình có số 1.35654754455+454.456547567 thì khi mình =diengiai() thì nó hiện ra số rất dài. mình muốn nó chỉ hiện ra 3 số thập phân thôi.
2/ khoảng cách giữa giấu và chữ gần nhau quá. mình muốn nó xa ra chút
vd: 123.344 + 5445
Bạn tìm đến dòng cuối cùng có đoạn
For i = 0 To UBound(subText)
strText2 = strText2 & subText(i) & dau(i)
Next i
Thì thay bằng
For i = 0 To UBound(subText)
strText2 = strText2 & Round(subText(i), 2) & dau(i)
Next i
Tìm hiểu con số 2 màu đỏ
 
Upvote 0
cám ơn bạn nhiều. vấn đề 1 đã giải quyết xong.
Nhưng còn Vấn đề 2 là số sau dấu gần nhau quá. mình muốn nó cách xa nhau xíu để cho dễ coi. ( vd như 4 + 5) chứ như (4+5) nó gần nhau quá.
ah mà còn 1 vấn đề nữa là mình muốn hỏi là dấu mũ ( 2^2) thì có thế cho số 2 nó lên trên đầu được không.( như dấu mũ mình viết bình thường ah,nó không hiện " ^")
 
Upvote 0
Web KT

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

Back
Top Bottom