如何匹配单元格的前 6 个字符而不是整个单元格

How to match first 6 characters of a cell instead of the whole cell

关注:

rows = w2.Columns("A:A").Find(What:=aCell, LookAt:=xlWhole).Row

我试图只匹配单元格的前 6 个字符,而不是查看整个单元格以匹配 (xlwhole)。我研究了 xlpart 和其他一些选项,但没有成功。

Sub test()
Dim aCell
Dim A, B As Long, rows As Long
Dim w1, w2 As Worksheet
Dim cell As Range

Set w1 = Workbooks("Book1").Sheets("Sheet1")
Set w2 = Workbooks("Book2").Sheets("Sheet1")

A = w1.Cells(w1.Rows.Count, 1).End(xlUp).Row
B = w2.Cells(w2.Rows.Count, 1).End(xlUp).Row

For Each aCell In w1.Range("A2:A" & A)
On Error Resume Next
rows = w2.Columns("A:A").Find(What:=aCell, LookAt:=xlWhole).Row
On Error GoTo 0

If rows = 0 Then

Else
    w2.Range("B" & rows).Value = aCell.Offset(0, 1).Value
End If
rows = 0
Next

End Sub

Find 支持通配符 *。使用 Left$ 获取单元格值的前 6 个字符。

For Each aCell In w1.Range("A2:A" & A)
   Dim rng As Range
   Set rng = w2.Columns("A:A").Find(What:=Left$(aCell.Value, 6) & "*", LookAt:=xlWhole)

   ' First test if the find succeeded
   If Not rng Is Nothing Then
       rng.Offset(,1).Value = aCell.Offset(,1).Value
   End If
Next