为什么Excel VBA中的.Find()方法似乎只检查前15个字符?

Moo*_*sli 10 excel vba find excel-vba excel-formula

我有带有ID和数据的Excel列表(大约8000行以上).ID只能是带有字符的数字或数字.像" 2222222222222223 "或" 222222222222222A "(具有ID的单元格被格式化为文本)

如果我试图找到带有ID的条目地址,它将插入一个现在的行,因为它将找不到它们.是什么意思到最后我把所有参赛作品加倍.


所以我的问题是,find方法比较了多少个字符?

With objSheet
     strAdresseExcel = .Cells.Find(What:=str, After:=.Cells(1, 1), _ 
     LookAt:=Excel.XlLookAt.xlWhole, MatchCase:=True, SearchFormat:=False).Address
    End with
Run Code Online (Sandbox Code Playgroud)

所以我创建了一个8000行的虚拟列表,其中所有的ID都有数字" 2222222222222222 ",我找到了一些东西.

如果字符串中只有数字,Excel只比较前15个字符,但如果ID中有字母,我的工作正常!您可以在下面的图片中看到该问题

图像信息:
行A:
我使用条件格式.
(在"主页"选项卡上,单击"条件格式","突出显示单元格规则","重复值")
仅当ID具有数字或前15个字符存在差异时才起作用.

B行:
我和一个公式一起工作.(= IF(COUNTIF(A:A; A2)> 1;"Double";""))
你怎么看,同样的问题也发生在这里.

在此输入图像描述

Rya*_*dry 1

这似乎对我有用,除非我错过了一些东西,这是完全有可能的:)

它返回单元格匹配的第一个地址并打印出搜索到的字符串的长度。我在 Sheet1 中设置了数据集,如图所示,数字数据存储为文本(我在每个值的开头添加了撇号)

 Sub testSO()
    Dim objSheet   As Worksheet: Set objSheet = ThisWorkbook.Sheets("Sheet1")
    Dim strToFind  As String: strToFind = "22222222222222222222222"
    Dim strAddress As String

    strAddress = objSheet.Cells.Find(strToFind, objSheet.Cells(1, 1), _
    LookAt:=Excel.XlLookAt.xlWhole, MatchCase:=True, SearchFormat:=False).Address

    'Print out findings
    Debug.Print strAddress, Len(strToFind), Len(objSheet.Range(strAddress))
End Sub
Run Code Online (Sandbox Code Playgroud)

输出是:

$A$5 23 23