gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:04:52 25 4
gpt4 key购买 nike

我有一个包含 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行:
我使用条件格式。
(在“主页”选项卡上,单击“条件格式”、“突出显示单元格规则”、“重复值”)
仅当 ID 包含数字或前 15 个字符存在差异时才有效。

B行:
我使用公式。 (=IF(COUNTIF(A:A;A2)>1;"双";""))
正如您所看到的,同样的问题也发生在这里。

enter image description here

最佳答案

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

它返回单元格匹配的第一个地址并打印出搜索到的字符串的长度。我在 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

关于vba - 为什么 Excel VBA 中的 .Find() 方法似乎只检查前 15 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42834212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com