1

こんにちは、Excel 2003 でマクロを実行して物件の住所を所有者の住所に一致させているので、最終的に不在の所有者のレポートが作成されます。

だから:

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

これは生データの一部が入力された方法ですが、このレコードと他のすべてのわずかに異なるレコードが一致する必要があるため、不在の所有者の住所を検索し、選択したレコードをシート 2 に入力するため、マクロによって選択されません。素人の言葉で言えば、列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

うまくいけば、ここで必要な正しい形式でコードを貼り付けました。そのため、ヘルプとガイダンスをいただければ幸いです。

4

1 に答える 1

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

于 2012-12-05T06:18:47.440 に答える