[Nhờ sữa hàm diễn giải] (1 người xem)

Liên hệ QC

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

huunhanltqb

Thành viên mới
Tham gia
6/10/11
Bài viết
30
Được thích
0
Đây là hàm mà tôi lấy ở diễn đàn thì phải nhưng nó chưa phù hợp cho lắm. Nó chỉ diễn giải được các giá trị trong công thức. Bây giờ tôi muốn nó diễn giải thêm giá trị link từ các địa chỉ khác
Đây là file yêu cầu
Cám ơn mọi người
 

File đính kèm

VòiVậy là sau mấy ngày mày mò cũng làm được 1 số trường hợp. Còn 1 số trường hợp có dấu ")" này thì đang bị lỗi không biết xử lý thế nào nữa mọi người có thể sửa lại giùm cho tôi. cám ơn mọi người
Đây la code
Mã:
Function Diengiai(Chuoi As Variant)
    Dim sodau As Byte, jJ As Byte, socuoi As Byte
    sodau = 0
    GPEDem = 0
    If Chuoi.Formula = 0 Then Chuoi = "= "
    If Left(Chuoi.Formula, 1) = "=" Then Chuoi = " = " & Right(Chuoi.Formula, Len(Chuoi.Formula) - 1)
    For jJ = 1 To Len(Chuoi)
        If Mid(Chuoi, jJ, 1) = "=" Then
            socuoi = jJ
            sodau = socuoi
        ElseIf Mid(Chuoi, jJ, 1) = "+" Then
            socuoi = jJ
            gpedem1 = Mid(Chuoi, sodau + 1, socuoi - sodau - 1)
            'kt = RejSymbol(Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi))
            sodau = socuoi
           If IsNumeric(gpedem1) = True Or Asc(Mid(gpedem1, 1, 1)) = 40 Or Asc(Mid(gpedem1, Len(gpedem1), 1)) = 41 Then
                If GPEDem = 0 Then
                GPEDem = gpedem1 & " + "
                Else
                GPEDem = GPEDem & gpedem1 & " + "
                End If
            Else
                gpedem1 = Range(gpedem1)
                If GPEDem = 0 Then
                GPEDem = gpedem1 & " + "
                Else
                GPEDem = GPEDem & gpedem1 & " + "
                End If
            End If
        ElseIf Mid(Chuoi, jJ, 1) = "-" Then
            socuoi = jJ
            gpedem1 = Mid(Chuoi, sodau + 1, socuoi - sodau - 1)
            'kt = RejSymbol(Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi))
            sodau = socuoi
             If IsNumeric(gpedem1) = True Or Asc(Mid(gpedem1, 1, 1)) = 40 Or Asc(Mid(gpedem1, Len(gpedem1), 1)) = 41 Then
                If GPEDem = 0 Then
                GPEDem = gpedem1 & " - "
                Else
                GPEDem = GPEDem & gpedem1 & " - "
                End If
            Else
                gpedem1 = Range(gpedem1)
                If GPEDem = 0 Then
                GPEDem = gpedem1 & " - "
                Else
                GPEDem = GPEDem & gpedem1 & " - "
                End If
            End If
        ElseIf Mid(Chuoi, jJ, 1) = "*" Then
            socuoi = jJ
            gpedem1 = Mid(Chuoi, sodau + 1, socuoi - sodau - 1)
            'kt = RejSymbol(Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi))
            sodau = socuoi
            If IsNumeric(gpedem1) = True Or Asc(Mid(gpedem1, 1, 1)) = 40 Or Asc(Mid(gpedem1, Len(gpedem1), 1)) = 41 Then
                If GPEDem = 0 Then
                GPEDem = gpedem1 & "*"
                Else
                GPEDem = GPEDem & gpedem1 & "*"
                End If
            Else
                gpedem1 = Range(gpedem1)
                If GPEDem = 0 Then
                GPEDem = gpedem1 & "*"
                Else
                GPEDem = GPEDem & gpedem1 & "*"
                End If
            End If
        ElseIf Mid(Chuoi, jJ, 1) = "/" Then
            socuoi = jJ
            gpedem1 = Mid(Chuoi, sodau + 1, socuoi - sodau - 1)
            'kt = RejSymbol(Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi))
            sodau = socuoi
            If IsNumeric(gpedem1) = True Or Asc(Mid(gpedem1, 1, 1)) = 40 Or Asc(Mid(gpedem1, Len(gpedem1), 1)) = 41 Then
                If GPEDem = 0 Then
                GPEDem = gpedem1 & "/"
                Else
                GPEDem = GPEDem & gpedem1 & "/"
                End If
            Else
                gpedem1 = Range(gpedem1)
                If GPEDem = 0 Then
                GPEDem = gpedem1 & "/"
                Else
                GPEDem = GPEDem & gpedem1 & "/"
                End If
            End If
        End If
    Next jJ
gpedem1 = Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi)
'kt = RejSymbol(Mid(Chuoi, socuoi + 1, Len(Chuoi) - socuoi))
If IsNumeric(gpedem1) = True Or Asc(Mid(gpedem1, 1, 1)) = 40 Or Asc(Mid(gpedem1, Len(gpedem1), 1)) = 41 Then
Diengiai = " = " & GPEDem & gpedem1
Else
gpedem1 = Range(gpedem1)
Diengiai = " = " & GPEDem & gpedem1
End If
End Function
file đính kèm
 

File đính kèm

Upvote 0
Nhằm hoàn thiện hơn nữa hàm lấy công thức ở trên mấy ngày này mày mò tiếp nhưng chưa được. Hôm nay quay lại chủ đề cũ mong các cao thủ giúp đỡ.
Cám ơn mọi người!!!!!!
 
Upvote 0
Web KT

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

Back
Top Bottom