文本和数字格式的Excel上(Text and Number Format on Excel)

2019-10-17 14:26发布

我有问题,当我想A1 = 1.3 B1 = 3和a2 = 1.3 B2 = 2 Excel的之间进行比较

例如= IF(A1> A2, “是”,IF(A1 = A2,IF(B1> B2, “是”, “否”), “否”))

第一次是好的,但后来我从B1改变值= 1改成了“不”,那么我改回了B1 = 3它仍然是“不”

我认为它在细胞上的格式担忧

另一个值得关注的是,如果我使用像1.3.1比较1.3.1.2它没有任何问题

但是,当我只用1.3(一个小数点),它送花儿给人有问题

这是很难解释,你应该尝试XX和XXX之间的比较

此外,如果你有一个很好的另一个VBA代码进行比较的版本号

谢谢你告诉我我想学习一下吧

它像1个小数点Excel中看到的号码,但许多小数点Excel中看到的文本

如何解决这个(我必须尝试改变为文本格式,但它的工作1次更改值在单元格是回去错误之后)。

由于我的英语很差。 这样可以很清楚"How do i make xx see as text so that i can compare with xxx :) "

Answer 1:

以下是你可能要检查的一篇文章/后。 第一印象我对你的问题是,你可能会试图做一个版本号比较。 长度和文本点分隔符的数量可能现在重要greatly.for请这一点,

http://www.dbforums.com/microsoft-excel/1670840-compare-version-numbers-return-highest-value.html

否则,你可以尝试在log以及:

= A1 * 10 ^(4-INT(LOG(A1)))

还是在尾随更换. 点,肯定是第二个文本变成十进制:

如1.3.4将是1.34和1.3.4.1.3将是1.3413

1.2.5.6将是125.6和1.2.4.6.1将是124.61

PS:不是一台机器的前面。 将为您提供另一种代码,我用点分隔符基于分裂和比较。

与函数编辑:这将比较两个版本号与任意数量的点分,把它当作一个字符串/文本。 但是在1.3.1和1.21.1的情况下,这需要为1.21.1次数最多的。

Option Explicit

Function versionNumberComparison(ByRef rng1 As Range, ByRef rng2 As Range) As String
    Dim i As Integer
    Dim arrVersion1 As Variant, arrVersion2 As Variant
    Dim strVer1 As String, strVer2 As String
    Dim bool2 As Boolean, bool1 As Boolean
    Dim x As Long, y As Long

    Application.EnableEvents = False
    If Not IsEmpty(rng1.Value) Then
        strVer1 = rng1.Value
        arrVersion1 = Split(rng1.Value, ".")
    Else
        versionNumberComparison = "Version number empty"
        GoTo Zoo
    End If
    If Not IsEmpty(rng2.Value) Then
        strVer2 = rng2.Value
        arrVersion2 = Split(rng2.Value, ".")
    Else
        versionNumberComparison = "Version number empty"
        GoTo Zoo
    End If

    If UBound(arrVersion1) > UBound(arrVersion2) Then
        x = UBound(arrVersion1)
        y = UBound(arrVersion2)
    ElseIf UBound(arrVersion1) < UBound(arrVersion2) Then
        x = UBound(arrVersion2)
        y = UBound(arrVersion1)
    Else
        x = UBound(arrVersion1)
        y = x
    End If

    i = 0
        While i <= y
            If IsNumeric(arrVersion1(i)) And IsNumeric(arrVersion2(i)) Then
                    If CInt(Trim(arrVersion1(i))) = CInt(Trim(arrVersion2(i))) Then
                        If i = y Then
                            If x <> y Then
                                If Len(strVer1) > Len(strVer2) Then
                                    bool1 = True
                                    bool2 = False
                                    GoTo PrintOut
                                Else
                                    bool2 = True
                                    bool1 = False
                                    GoTo PrintOut
                                End If
                            End If
                        End If
                            bool1 = False
                            bool2 = False
                    ElseIf CInt(Trim(arrVersion1(i))) > CInt(Trim(arrVersion2(i))) Then
                        bool1 = True
                        bool2 = False
                        GoTo PrintOut
                    Else
                        bool2 = True
                        bool1 = False
                        GoTo PrintOut
                    End If
            Else
                versionNumberComparison = "Enter Valid version numbers"
                GoTo Zoo
            End If
            i = i + 1
        Wend

PrintOut:

    If bool1 Then
        versionNumberComparison = strVer1
    ElseIf bool2 Then
        versionNumberComparison = strVer2
    Else
        versionNumberComparison = "Both the same"
    End If

Zoo:
Application.EnableEvents = True
End Function

输出:



文章来源: Text and Number Format on Excel