1

Я много пересылаю данные в 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 до k?

Например, (j = 3, k = 4) a6, d6, g6, j6, m6 и т.д. -> a10, e10, i10, m10, q10 и т. д.

2 ответа2

0

VBA твой друг. Если по какой-то причине VBA не подходит, вы можете разделить экран и посмотреть на ячейки источника вверху и на место назначения снизу (или наоборот).

Разбить по вертикали (по горизонтали):
Разбить по вертикали (по горизонтали)

Противоположный:
Противоположный

Конечный результат с 4 отдельными экранами:
Конечный результат с 4 отдельными экранами

0

Если вы никогда не пробовали 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 вы их увидите.

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .