Excel上的文本和数字格式

在这里输入图像说明 我有问题,当我想比较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 :) "

这是您可能想要查看的文章/post。 我对你的问题的第一印象是,你可能试图做一个版本号比较。 文本中的点分隔符的长度和数量可能会很大,现在请检查一下,

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

否则,你也可以尝试log

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

或者在尾随上进行replace. 点,当然第二个文本变成小数点:

例如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:不是机器的前面。 将为您提供另一个代码,我已经基于分割点分隔符和比较。

编辑一个函数:这将比较两个版本号与任意数量的点的点,把它作为一个string/文本。 然而,在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 

输出:

在这里输入图像说明