仅将单元格中的某些字符与另一个单元格中的某些字符进行比较

时间:2012-12-05 05:10:18

标签: excel excel-vba vba

大家好我在Excel 2003中运行一个宏来将属性地址与其所有者地址相匹配,因此我最终得到了缺席所有者的报告。

所以:

column A                                       column C 
10 Smith DR Smithville                         10 Smith DVE, Smithfield, 49089 Antartica 

这是一些原始数据的输入方式,但我需要这个记录和所有其他略有不同的记录才能匹配,因此宏不会选择 当它搜索缺席者所有者地址时,然后将所选记录填充到sheet2。 在外行人看来,如果我可以比较只说A列中的前6个字符和C列中的前6个字符,那么我认为它将按我需要的方式工作。

有谁知道我如何在下面显示的宏中实现这个目标

Sub test()
Dim i As Long, lr As Long, r As Long, ws As Worksheet, value As Variant, 
    val As Variant
Dim sval As Integer, lr2 As Long
Application.ScreenUpdating = False
Set ws = Worksheets("Sheet1")
lr = ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lr
    value = Split(Cells(i, 1).value, ", ")
    For val = LBound(value) To UBound(value)
        sval = InStr(1, Cells(i, 3).value, value(val), 1)
        If sval = 0 Then Range("A" & i & ":" & "C" & i).Interior.Color = 65535
    Next
Next
For r = 2 To lr
    lr2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
    If Range("A" & r).Interior.Color = 65535 Then
        Rows(r).Copy Destination:=Sheets("Sheet2").Rows(lr2 + 1)
        lr2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row
    End If
Next r
Sheets("Sheet2").Cells.Interior.ColorIndex = 0
Application.ScreenUpdating = True
MsgBox "Done Macro"
End Sub

希望我已经按照此处所需的正确格式粘贴了代码。 所以任何帮助和指导都会非常感激。

1 个答案:

答案 0 :(得分:3)

您可以使用公式LEFT()。这将检查A列中单元格中的前6个字符到C列中的前6个字符。如果匹配,它会将A列中的值添加到A列,Sheet2中的下一个空闲单元格。

Sub First6Characters()

LastRow = Cells(Rows.Count, "A").End(xlUp).Row
LastRowSheet2 = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To LastRow
    If Left(Range("A" & i), 6) = Left(Range("C" & i), 6) Then
        Sheets("Sheet2").Range("A" & LastRowSheet2).Value = Range("A" & i).Value
        LastRowSheet2 = LastRowSheet2 + 1
    End If
Next i

End Sub

来源: http://www.techonthenet.com/excel/formulas/left.php