phan_huythai
Thành viên chính thức


- Tham gia
- 15/9/12
- Bài viết
- 60
- Được thích
- 1
Trả lời luôn cho bạn khỏi mất công suy nghĩ: HỔNG CÓ HÀM NÀO LÀM ĐƯỢC ĐIỀU NÀY CẢem có vấn đề nhờ các thầy, cô giúp đỡ.
dấu mũ khi ta vết trong excel là 2^2. nhưng em muốn khi mình hiện số ra dùng hàm " ct" như trong file. thì nó hiện ra 22. số ' 2" sau thì nó nhỏ hơn chỉ ở phía trên.
Tính toán trong Excel đâu chỉ có mũ 2 và 3Thêm vào hai dòng này vào cuối hàm ct
Mã:[B]ct = Replace(ct, "^ 2", Chr(178)) ct = Replace(ct, "^ 3", Chr(179))[/B] End Function
Tính toán trong Excel đâu chỉ có mũ 2 và 3
Trường hợp mũ 4, mũ 5... vân vân thì anh viết sao?
(nói chung là mũ.. bất kỳ)
"Hàm thì không thể nhưng thủ tục thì được." là sao ạ?
Thử vầy xem:em có cái này. mấy thầy xem được không. nhưng nếu với dấu mũ # 2,3 thì sao? em nghĩ cái này rất hay. mong các thầy phát triển thêm.
Public Function ct(ByVal rCel As Range)
Dim strText As String, strOp As String
Dim tmp1 As String, tmp2 As String, ch As String
Dim j As Long
Dim Arr, sAddr, p
On Error Resume Next
p = Array(8304, 185, 178, 179, 8308, 8309, 8310, 8311, 8312, 8313)
strOp = "+-*/^()\"
If rCel.HasFormula Then
strText = rCel.Formula
strText = Replace(strText, "=", "")
strText = Replace(strText, " ", "")
tmp1 = strText
For j = 1 To Len(strOp)
ch = Mid(strOp, j, 1)
tmp1 = Replace(tmp1, ch, " ")
Next
tmp1 = WorksheetFunction.Trim(tmp1)
Arr = Split(tmp1, " ")
For j = 0 To UBound(Arr)
tmp2 = Round(Evaluate(Arr(j)), 3)
strText = Replace(strText, Arr(j), tmp2, , 1)
Next
For j = 1 To Len(strOp)
ch = Mid(strOp, j, 1)
If ch <> "(" And ch <> ")" Then
strText = Replace(strText, ch, " " & ch & " ")
End If
Next
ct = " = " & Replace(strText, "*", " x ")
For j = 0 To 9
ct = Replace(ct, "^ " & j, ChrW(p(j)))
Next
End If
End Function
Bạn tự tìm trong Symbol xem có không? Tôi không biết (tìm xem có dấu chấm nào "treo trên trời" không?)thầy ơi. với các số lẻ thì sao? vd như 1.5, 1.6 thì sao ạ. hj![]()
Sub Ct()[COLOR=#000000]
[/COLOR] Dim i As Long, k As Long, s As String, Arr
For Each cell In Selection.Cells
If cell.HasFormula Then
s = cell.Formula
With CreateObject("vbscript.regexp")
.Global = True
.Pattern = "^[\+|=]*"
s = .Replace(s, "")
.Pattern = "\^(\d+|\D+)"
ReDim Arr(1 To .Execute(s).Count, 1 To 2)
For Each Match In .Execute(s)
s = Replace(s, Match, Right(Match, Len(Match) - 1))
k = k + 1
Arr(k, 1) = Match.FirstIndex - k + 2
Arr(k, 2) = Len(Match) - 1
Next
End With
cell.Offset(, 1) = s
For i = 1 To UBound(Arr)
cell.Offset(, 1).Characters(Arr(i, 1), Arr(i, 2)).Font.Superscript = True
Next
End If
k = 0
Next
End Sub
E cũng tham gia 1 bài góp vui
Cũng như bài của bác thanhlanh : số mũ bất kỳ nên chỉ dùng Sub
Mã:Sub Ct()[COLOR=#000000] [/COLOR] Dim i As Long, k As Long, s As String, Arr For Each cell In Selection.Cells If cell.HasFormula Then s = cell.Formula With CreateObject("vbscript.regexp") .Global = True .Pattern = "^[\+|=]*" s = .Replace(s, "") .Pattern = "\^(\d+|\D+)" ReDim Arr(1 To .Execute(s).Count, 1 To 2) For Each Match In .Execute(s) s = Replace(s, Match, Right(Match, Len(Match) - 1)) k = k + 1 Arr(k, 1) = Match.FirstIndex - k + 2 Arr(k, 2) = Len(Match) - 1 Next End With cell.Offset(, 1) = s For i = 1 To UBound(Arr) cell.Offset(, 1).Characters(Arr(i, 1), Arr(i, 2)).Font.Superscript = True Next End If k = 0 Next End Sub
Sub Ct()
Dim i As Long, k As Long, s As String, Arr
For Each cell In Selection.Cells
If cell.HasFormula Then
s = Right(cell.Formula, Len(cell.Formula) - 1)
With CreateObject("vbscript.regexp")
.Global = True
s = .Replace(s, "")
.Pattern = "\^-*(\d|[a-zA-Z])*((\.|,)*(\d|[a-zA-Z])*)*"
ReDim Arr(1 To .Execute(s).Count, 1 To 2)
For Each Match In .Execute(s)
s = Replace(s, Match, Right(Match, Len(Match) - 1))
k = k + 1
Arr(k, 1) = Match.FirstIndex - k + 2
Arr(k, 2) = Len(Match) - 1
Next
End With
cell.Offset(, 1) = s
For i = 1 To UBound(Arr)
cell.Offset(, 1).Characters(Arr(i, 1), Arr(i, 2)).Font.Superscript = True
Next
End If
k = 0
Next
End Sub