Некоторое время я использовал следующий код, но мне нужна помощь в внесении одного изменения. Я пытался и пытался, но это не сработает. Если кто-то может посмотреть, мое исследование говорит, что я ищу «цикл изменений, чтобы записать результаты в дополнительные ячейки». Пожалуйста, смотрите мое изображение Excel ниже.
Прямо сейчас код находит все совпадающие числа, введенные в ячейку A1, и размещает их в соответствующих ячейках L1:l12. Мне нужен код, чтобы также разместить ту же информацию только в одной из следующих ячеек: C17, C18, F17, F18. Кроме того, если код может скопировать и вставить число в ячейке под соответствующим номером (из ячейки A1), см. Пример результата ниже) в ячейку слева от вышеуказанной вставки цикла изменения в следующие ячейки: B17, B18, Е17, Е18.
Пример с ожидаемым результатом в соответствии с образцом Excel. Номер 8 был введен в ячейку А1 и найден 8 в ячейке А34. Таким образом, 8-15 будут скопированы и вставлены в L8 и C17. Также будет скопировано число 7 из ячейки A35 (следующее число) в ячейку B17. Код также сделал бы то же самое для ячейки F20 и E21. После всего копирования и вставки все ячейки B34, C34 и D34 должны быть удалены, и поэтому они будут пустыми. То же самое для F20, G20 и H20. Я надеюсь, что это понятно, если нет, пожалуйста, сообщите, и я уточню.
Мой рабочий код ниже, а моя попытка ниже этого кода.
Рабочий код:
Sub do_it()
Dim n, sht As Worksheet, cell As Range, num, tmp, rngDest As Range
Set sht = ActiveSheet
n = sht.Range("A1")
For Each cell In sht.Range("A20:A34,D20:D34,G20:G34").Cells
tmp = cell.Offset(0, 1).Value
If cell.Value = n And tmp Like "*#-#*" Then
'get the first number
num = CLng(Trim(Split(tmp, "-")(0)))
Debug.Print "Found a positive result in " & cell.Address
'find the next empty cell in the appropriate row
Set rngDest = sht.Cells(num, sht.Columns.Count).End(xlToLeft).Offset(0, 1)
'make sure not to add before col L
If rngDest.Column < 12 Then Set rngDest = sht.Cells(num, 12)
cell.Offset(0, 1).Copy rngDest
End If
Next
End Sub
Моя попытка:
Sub do_it()
Dim n, sht As Worksheet, cell As Range, num, tmp, rngDest As Range
Set sht = ActiveSheet
n = sht.Range("A1")
For Each cell In sht.Range("A20:A34,D20:D34,G20:G34").Cells
tmp = cell.Offset(0, 1).Value
If cell.Value = n And tmp Like "*#-#*" Then
'get the first number
num = CLng(Trim(Split(tmp, "-")(0)))
Debug.Print "Found a positive result in " & cell.Address
'find the next empty cell in the appropriate row
Set rngDest = (“ C17, C18, F17, F18’)
cell.Offset(0, 1).Copy rngDest
End If
Next
End Sub