
私は Excel でデータを頻繁に転送します。ランダムに選んだ多数のセルを別の場所にコピーして、並べて表示できるようにしたいと考えています。
たとえば、a3、d21、aa32、cd121 などをコピーして、a3->a1000、d21->b1000、aa32->c1000 などとします。
1 つずつコピーして、これらのランダムなセルをそれぞれ調べるのに長い時間をかけて行ったり来たりすること以外に、これを行う簡単な方法はありますか?
私が期待している回答は次のとおりです。これらのセル (a3、d21 など) を検索し、順番にすべて選択されるように 1 つずつ選択します。次に、「何らかのコマンド」を実行してから 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 では色を見ることができます。
幸運を!