我有一个带有ID和数据的Excel列表(大约8000行或更多)。ID只能是带有字符的数字。类似于"2222222222222223“或"222222222222222A”(带有ID的单元格被格式化为文本)
如果我试图用ID查找条目地址,它将插入一个now行,因为它将找不到它们。这意味着最后我把所有条目都翻了一番。
所以我的问题是,find方法比较了多少个字符?
With objSheet
strAdresseExcel = .Cells.Find(What:=str, After:=.Cells(1, 1), _
LookAt:=Excel.XlLookAt.xlWhole, MatchCase:=True, SearchFormat:=False).Address
End with所以我创建了一个包含8000行的虚拟列表,其中所有的ID都有数字"2222222222222222“,我找到了一些东西。
如果字符串中只有数字,则Excel只比较前15个字符,但如果ID中有一个字母,则我可以正常工作!您可以在下面的图像中看到这个问题
图像信息:
A行:
我处理的是条件格式。
(在Home选项卡上,单击条件格式,突出显示单元格规则,复制值)
只有当ID有数字或前15个字符有差异时才能工作。
B行:
我用的是方程式。(=IF(COUNTIF(A:A;A2)>1;"Double";""))
你怎么看,同样的问题也发生在这里。

发布于 2017-03-16 13:32:09
这似乎对我有用,除非我遗漏了什么,这是完全有可能的:)
它返回单元格匹配的第一个地址,并打印搜索字符串的长度。我在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产出如下:
$A$5 23 23
https://stackoverflow.com/questions/42834212
复制相似问题