提问人:Keesler Water Walker 提问时间:6/30/2018 更新时间:6/30/2018 访问量:314
比较大于“长整数”的精确整数
Compare exact integers greater than "long integer"
问:
我需要在 Excel 2013 中找到更好的 VBA 数据类型,以便我可以在两个正 10 位整数之间进行更准确的比较。我已经找到并尝试了,但这在这个版本中似乎不存在。此外,没有这些数字所需的范围。CULng
CLng
我有一个电话号码数据库(10 位数字),需要一种方法来比较两个确切的数字。我的数据库中的一些条目是列出范围的第一个和最后一个的字符串,所以我不能只使用 If A = B Then(做某事)。我试过使用 ,但它使用指数格式将数字四舍五入(5555559100 和 5555559150 都变成 5.555559e+09 )。然后,即使这两个数字不匹配,它们也被视为相等。在此代码之前,我已将搜索 TN 剥离为仅数字,但它仍然是一个字符串值。CSng
Private Sub FindTN()
Dim TN As String
Dim begin As Single
Dim last As Single
Dim RowNo As Long
Sheet1.Range("A1").Value = "5555559100TO5555559125"
Sheet1.Range("A2").Value = "5555559150TO5555559175"
Sheet1.Range("A3").Value = "5555559160"
TN = "5555559160"
For Each entry In Sheet1.Range("A1:A3")
If Len(entry.Value) = 10 And entry.Value = TN Then
RowNo = entry.Row
Debug.Print "RowNo = " & RowNo
'Find beginning and ending values of a range
ElseIf Len(entry.Value) > 10 And InStr(11, entry.Value, "TO") = 11 Then
begin = CSng(Left(entry.Value, 10))
last = CSng(Right(entry.Value, 10))
'Search within range
If CSng(TN) >= begin And CSng(TN) <= last Then
RowNo = entry.Row
Debug.Print "RowNo = " & RowNo
End If
End If
Next entry
End Sub
它应该只在第 2 行和第 3 行匹配,但结果是
RowNo = 1
RowNo = 2
RowNo = 3
答:
1赞
Dy.Lee
6/30/2018
#1
像这样将变量固定为双倍。
Private Sub FindTN()
Dim TN As String
Dim begin As Double 'Single
Dim last As Double ' Single
Dim RowNo As Long
Sheet1.Range("A1").Value = "5555559100TO5555559125"
Sheet1.Range("A2").Value = "5555559150TO5555559175"
Sheet1.Range("A3").Value = "5555559160"
TN = "5555559160"
For Each entry In Sheet1.Range("A1:A3")
If Len(entry.Value) = 10 And entry.Value = TN Then
RowNo = entry.Row
Debug.Print "RowNo = " & RowNo
'Find beginning and ending values of a range
ElseIf Len(entry.Value) > 10 And InStr(11, entry.Value, "TO") = 11 Then
begin = CDbl(Left(entry.Value, 10))
last = CDbl(Right(entry.Value, 10))
'Search within range
If CDbl(TN) >= begin And CDbl(TN) <= last Then
RowNo = entry.Row
Debug.Print "RowNo = " & RowNo
End If
End If
Next entry
End Sub
评论
CSng
Cdbl