У меня есть макрос, который работает, но я хотел бы изменить диапазон ячеек с
Set SearchRange = Range("E1:E12") to
Set SearchRange = Range("A21:A32")
Я внес изменения в код, но он не будет работать, когда я его запустил, и я не уверен, в чем проблема. У меня есть объяснение ниже кода.
Sub Part()
Dim SearchRange As Range, _
DashPair As Variant, _
PairParts As Variant, _
SearchVal As Variant, _
FoundPos As Variant, _
NextCol As Long
Set SearchRange = Range("A21:A32")
For Each DashPair In Range("B17, F17, J17")
Err.Clear
NextCol = 1
If DashPair.Value <> "" Then
PairParts = Split(DashPair, "-")
If PairParts(1) = "15" Then
SearchVal = DashPair.Offset(RowOffset:=1).Value
On Error Resume Next
Set FoundPos = SearchRange.Find(SearchVal, LookAt:=xlWhole)
If Not FoundPos Is Nothing Then
FoundPos = FoundPos.Row
' find first empty column right of E
While SearchRange(FoundPos).Offset(ColumnOffset:=NextCol).Value <> ""
NextCol = NextCol + 1
Wend
PairParts(1) = PairParts(1) + 1
PairParts = Join(PairParts, "-")
With SearchRange(FoundPos).Offset(ColumnOffset:=NextCol)
.NumberFormat = "@"
.Value = "" & PairParts & ""
End With
DashPair.Resize(ColumnSize:=3).ClearContents
End If
End If '15 found
End If
Next DashPair
End Sub
Пример с ожидаемым результатом.
Пожалуйста, смотрите мой пример Excel, макрос ищет 15 (как последнее число 20-15 и т.д.) Только в ячейках B17, F17 и J17 в настоящее время. Когда он дает положительный результат, он ссылается на ячейку под ним и использует это число для поиска совпадений в ячейках A21:A32 и помещает копию и вставку в соседнюю ячейку справа от нее.
Пример: ячейка B30 имеет 20-15, используя ячейку ниже, B18 имеет 1. 1 - это номер поиска в диапазоне A21:A32. Найдя в диапазоне A21:A32, поместите 20-15 в соседнюю ячейку справа (B21) и увеличьте последнее число на 1, чтобы оно стало 20-16.
Делает то же самое со всеми ячейками: B17, F17 и J17.
После записи удаляется все содержимое в ячейке B17/C17/D17. В моем листе Excel есть два примера, где должно происходить одно и то же.