Копирование множества ячеек в одно место

Копирование множества ячеек в одно место

Я много переношу данные в 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 отдельными экранами:
Конечный результат с 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 вы их увидите.

Удачи!

Связанный контент