
Я много переношу данные в Excel. Я хочу иметь возможность копировать много случайных ячеек в другое место, чтобы они были рядом.
Например, я хочу скопировать a3,d21,aa32,cd121 и т.д. так, чтобы a3->a1000,d21->b1000,aa32->c1000 и т.д.
Есть ли простой способ сделать это, помимо копирования их по одной и перемещения туда-сюда, занимающего много времени и просматривающего каждую из этих случайных ячеек?
Тип ответа, на который я надеюсь: я ищу эти ячейки (a3, d21 и т. д.) и выбираю их по одной, чтобы они все были выбраны в порядке. Затем я выполняю "какую-то команду", затем нажимаю a1000, и они все копируются рядом.
Если Excel не может выполнять подобные операции, что делать, если эти «случайные» ячейки, которые я копирую, находятся в одной строке и разделены фиксированным расстоянием. Например, (через 3 ячейки) a6,d6,g6,j6,m6 и т. д. -> a10,b10,c10 и т. д.
Часть 2.)
Что, если вместо того, чтобы копировать их рядом, я захочу скопировать их так, чтобы они находились, скажем, на расстоянии k столбцов друг от друга для некоторого положительного целого числа k?
Например (k=4) a3,d21,aa32,cd121 и т.д. -> a1000,e1000,i1000,m1000,q1000 и т.д.
или если это невозможно, как быть с ячейками в одной строке, расположенными на расстоянии от j до k друг от друга.
Например (j=3,k=4) a6,d6,g6,j6,m6 и т.д. -> a10,e10,i10,m10,q10 и т.д.
решение1
VBA — ваш друг. Если по какой-то причине VBA не подходит, вы можете разделить экран и посмотреть исходные ячейки вверху, а целевые — внизу (или наоборот).
Разделить вертикально (горизонтальной линией):
Противоположный:
Конечный результат с 4 отдельными экранами:
решение2
Если вы никогда не пробовали VBA, я предоставлю свой пример кода. Поскольку в вашем вопросе было много вариантов, я уверен, что после анализа кода вы сможете адаптировать его под свои нужды. Я также прокомментировал это, чтобы помочь вам учиться.
Сначала создайте новый модуль (Вставлять>Модуль)
И затем поместите внутрь код:
Option Explicit ' no matter what, this is a must have line in every case
Sub test()
' declaring variables
Dim rngSource As Range
Dim rngTarget As Range
Dim i As Long
Const k As Long = 4 ' this is the k from your example
Dim cell As Range
' choosing source cells
Set rngSource = Application.InputBox(prompt:="Choose cells, use Ctrl", Type:=8)
' choosing destination cell
Set rngTarget = Application.InputBox(prompt:="Select the 1st target cell", Type:=8)
' iterating through every cell in Source selection
i = 0
For Each cell In rngSource
' writing value
rngTarget.Offset(0, i).Value = cell.Value
i = i + k
Next
End Sub
По какой-то причине вы не видите здесь цвета. Но в VBE вы их увидите.
Удачи!