Я бы хотел поменять выбранные диапазоны ячеек в одном и том же столбце без автоматической корректировки вложенных формул в других столбцах. Эти диапазоны ячеек почти всегда будут иметь неравный размер.
Я нашел код VBA, который делает это для двух выбранных ячеек, но я боюсь, что это мне не сильно поможет.
Sub SwapCells()
Dim sHolder As String
If Selection.Cells.Count = 2 Then
With Selection
sHolder = .Cells(1).Formula
If .Areas.Count = 2 Then ' Cells selected using Ctrl key
.Areas(1).Formula = .Areas(2).Formula
.Areas(2).Formula = sHolder
Else ' Adjacent cells are selected
.Cells(1).Formula = .Cells(2).Formula
.Cells(2).Formula = sHolder
End If
End With
Else
MsgBox "Select only TWO cells to swap", vbCritical
End If
End Sub
Я знаю, что другим вариантом было бы удерживать 'shift' при перемещении диапазонов ячеек (работает отлично), но тогда все присоединенные формулы будут менять свою ссылку, которую я не хочу (например, если у меня есть формула, ссылающаяся на ячейку) A1, и я где-то поменяю местами A1, формула будет ссылаться на новую позицию A1, но я хочу, чтобы формула все еще ссылалась на A1).
Я думаю, что другим вариантом было бы использовать INDIRECT ("G" & ROW ()), чтобы исправить это, но, поскольку это довольно ресурсоемкая формула, я бы хотел увидеть альтернативу.
Кроме того, последние два варианта не позволят мне использовать таблицы (которые я предпочел бы по другим причинам), потому что вы не можете менять ячейки в таблицах. Вот почему я настоятельно предпочитаю вариант VBA.
Надеюсь, вы мне поможете, спасибо! Возможно, нужно лишь немного откорректировать код VBA.
С уважением,
Marco
РЕДАКТИРОВАТЬ: Если значительно проще поменять два одинаковых диапазона ячеек (например, охватывающих 5 ячеек каждый), то это также будет хорошим решением.