我在 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 中,您将看到它们。
祝你好运!