dấu mũ trong excel "^" (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
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.
 

File đính kèm

Ngồi ngâm cứu Code dhn46 bài #18 thấy có 1 số điểm cần sửa
1 - Khi đã kiểm tra Hasfomula thì không cần Pattern số 1 => bỏ Pattern số 1 + lấy chuỗi s không có ký tự "="
2 - Thay Pattern số 2 do không hiển thị được thập phân, dấu ngăn cách thập phân là dấu thập phân của phép tính

Code của bác thanhlanh chuyển hết dấu "." thành dấu ","

Code mới sẽ là:
Mã:
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

Bạn ứng dụng rất hay về VBscript, nhưng nhìn cái Pattern thấy tùm lum. Bạn có thể diễn nôm từng ký tự trong nó giùm. Cảm ơn.
----------------------
Mình chuyển sang dấu phẩy hết là theo ý mình, ai không thích thì bỏ câu lệnh đó di.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ứng dụng rất hay về VBscript, nhưng nhìn cái Pattern thấy tùm lum. Bạn có thể diễn nôm từng ký tự trong nó giùm. Cảm ơn.
----------------------
Mình chuyển sang dấu phẩy hết là theo ý mình, ai không thích thì bỏ câu lệnh đó di.
.Pattern = "\^-*(\d|[a-zA-Z])*((\.|,)*(\d|[a-zA-Z])*)*"
dhn46 xin giải thích theo suy nghĩ của mình:

\^-* : chuỗi có ký tự ^ hoặc - được lặp lại số lần >=0
(\d|[a-zA-Z])* : chuỗi có giá trị số hoặc chuỗi các ký tự từ a-z và A-Z lặp lại số lần >=0
(\.|,)* Chuôĩ gồm ký tự . hoặc ' lặp lại số lần >=0
=>
((\.|,)*(\d|[a-zA-Z])*)* : 1 chuỗi có dạng dấu chấm hoặc phẩy và các số hoặc chữ lặp lại số lần >=0 (cái này giải quyết trường hợp .aqw.re.12)



 
Upvote 0
Web KT

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

Back
Top Bottom