将多个单元格复制到一个位置

将多个单元格复制到一个位置

我在 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 中,您将看到它们。

祝你好运!

相关内容