Вот полный код. Он берет ключевое слово или фразу из нижней части листа, находит его в верхней части листа и вставляет соседнюю ячейку рядом с ключевым словом. Таким образом, если внизу написано «Население», оно находит население вверху, проходит одну ячейку, чтобы получить 35 987, и вставляет 35 987 рядом с Населением внизу листа. (На самом деле это вставка формулы, но проблема не в копировании / вставке).
Sub FindTest()
'
' FindTest Macro
'
Dim cArray As Variant
Dim rArray As Variant
Application.ScreenUpdating = False
cArray = Array(1, 3, 5, 7, 9, 11)
rArray = Array(1, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 42, 44, 46, 48, 54, 56, 58, 60, 63, 65, 67, 69, 71, 73, 75, 77, 79)
For Each i In cArray
For Each j In rArray
'Start one cell up and one cell to the left of BI ILF
Range("Q141").Offset(j, i).Select
fname = Selection.Text
'Range for floc is entire original Attributes section
Set floc = Range("P5:Y130").Find(fname, LookIn:=xlValues, LookAt:=xlWhole)
If Not floc Is Nothing Then
faddy = floc.Address
Range(faddy).Offset(0, 1).Select
Selection.Cut
'Range matches original starting cell
Range("Q141").Offset(j, i + 1).Activate
ActiveSheet.Paste
Else
GoTo Skip
End If
Skip:
Next j
Next i
Application.ScreenUpdating = True
End Sub
В целом это работает, но есть несколько ключевых слов, которые он просто не находит, даже если они полностью совпадают. Чтобы протестировать функцию поиска, я создал приведенный ниже код для определения целевого ключевого слова, которое исходный код не нашел. На этот раз он нашел именно то, что и предполагалось.
Sub Searcher()
'
' FindTest Macro
'
Range("AF153").Select
fname = Selection.Text
'Range for floc is entire original Attributes section
Set floc = Range("P5:Y130").Find(fname, LookIn:=xlValues, LookAt:=xlWhole)
If Not floc Is Nothing Then
faddy = floc.Address
Range(faddy).Offset(0, 1).Select
Selection.Cut
'Range matches original starting cell
Range("AG153").Activate
ActiveSheet.Paste
End If
End Sub
Итак: Почему это сработало, когда я жестко кодирую конкретную ячейку, но пропускаю ее, когда она выполняет ту же функцию, но внутри al oop? Диапазон ключевых слов, которые не работают, варьируется от отдельных слов до коротких фраз alphanumeri c. Напомним, что оригинальный код находит около 60% ключевых слов.
Спасибо!