gpt4 book ai didi

string - 比较两个字符串的元素

转载 作者:行者123 更新时间:2023-12-02 18:34:17 26 4
gpt4 key购买 nike

我开发了以下代码来比较 A 列和 D 列中的两个单元格(字符串),如果发现部分匹配,则在相应的 B 单元格中记下 D 单元格值。

Sub CompareAndGuess()
Dim strLen, aux As Integer
Dim max1, max2 As Long
Dim str As String

Range("A1").Select
Selection.End(xlDown).Select
max1 = ActiveCell.Row
Range("D1").Select
Selection.End(xlDown).Select
max2 = ActiveCell.Row

For a = 2 To max1
str = Cells(a, 1)
str = StrConv(str, vbUpperCase)
strLen = Len(str)
aux = strLen

For l = 3 To strLen
For d = 2 To max2
If Cells(d, 4) = Left(str, aux) Then
Cells(a, 2) = Cells(d, 4)
Exit For
ElseIf Cells(d, 4) = Right(str, aux) Then
Cells(a, 2) = Cells(d, 4)
Exit For
End If
Next d

aux = aux - 1
If Cells(a, 2) <> "" Then
Exit For
End If
Next l
Cells(a, 2).Select
Next a
End Sub

任何人都可以帮我找到问题出在哪里,因为当我运行它时,代码只能猜测 50 行中的一行,而它应该至少匹配 40 行左右。

拜托,我真的找不到那里的错误。如果您愿意,请随时针对我的问题提出另一种解决方案。

我正在分析的数据示例是:有拼写错误的名字:-

Jatiuca
Pajuara
Poco
Santa Luzia
Pajucara
Domingos Acacio
Jaragua
Stella Maris
P Verde
Tabuleiro dos Martin
Gruta Lourdes
Brasilia
Centro Historico
Monumento
Tabuleiro dos Martins

在此列表中搜索有拼写错误的名称:-

JARAGUÁ
TABULEIRO DO MARTINS
CENTRO
BRASÍLIA
CACIMBAS
JATIÚCA
CAITITUS
PAJUÇARA
CANAÃ
PONTA VERDE
CANAFÍSTULA
POÇO
CAPIATÃ
CAVACO
SANTA LÚCIA

最佳答案

在大家的帮助下我找到了正确的方法。这是:

        If InStr(1, Cells(d, 4), Left(str, aux)) = 1 Then
Cells(a, 2) = Cells(d, 4)
Exit For
ElseIf InStr(Cells(d, 4), Right(str, aux)) + strLen - aux = strLen Then
Cells(a, 2) = Cells(d, 4)
Exit For
End If

关于string - 比较两个字符串的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19039720/

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