- ベストアンサー
データを複数行ずつ空けてコピーする方法について
エクセルのデータ(縦方向の)を複数行(2~3行) ずつ空けたセルにコピーをしたいのですが、方法が 分かりません。 どなたかお教え下さい。 上記の質問の意味は、2行の例ですと、 123 123 234 → ← 1セル空ける 345 234 ← 1セル空ける 345 といった意味です。 ご指導の程、宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
(テストデータ)A1:A6に1-6を入れます。 (関数式)B1セルに式 =IF(MOD(ROW(A1),2)=1,INDEX($A$1:$A$10,INT(ROW(A1)+1)/2,1),"")を入れます。 (式の複写)B1をB2-B11まで複写する。 (結果)B1=1、B2=なし、B3=2、B4なし B5=3 上記式は行が奇数の時は、A列の(自分の行n+1)/2の行を 取ってくる。 VBAならもっと簡単だが。 2行おきの時はMOD(A1,3)=1のとき、 A列のROW(A1)+2/3を取ってくれば良い。
その他の回答 (5)
- nishi6
- ベストアンサー率67% (869/1280)
何回も行う時にはマクロが早いかもしれません。下にコードを書いてみました。ご参考に。 操作方法 1.最初にコピー元セル範囲を選択します。 2.次に、コントロールキーを押しながら、貼り付け先の最初のセルを選択します。 (これで2つのセル範囲(1つは単一セル)が選択された状態になります) 3.この状態で下のマクロを実行します。 コード中の copyStep に貼り付ける行のステップ数を設定するようにしてあります。3行毎に貼り付けの場合は 2 → 3 にします。 頻繁に使う場合は、ツール→マクロ→マクロ でマクロを選択し、オプシュンからショートカットキーを割り当てておくと便利と思います。ショーカットキーは半角英字大文字(ZやAなど)を指定します。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ↓ Sub StepCopy() Const copyStep = 2 'コピーステップ Dim copyRng As Range 'コピー元セル範囲 Dim pasteTopRng As Range '貼り付け先セル Dim wk As Range, rw As Long '作業用変数,行カウンタ On Error GoTo ErrorHandler 'コピー元セル範囲と貼り付け先セルを決める For Each wk In Selection.Areas If wk.Count > 1 Then Set copyRng = wk If wk.Count = 1 Then Set pasteTopRng = wk Next '指定ステップで貼り付ける For Each wk In copyRng pasteTopRng.Offset(rw, 0) = wk rw = rw + copyStep Next Exit Sub ErrorHandler: End Sub
- misatoanna
- ベストアンサー率58% (528/896)
#4 misatoanna です。 訂正させてください。 > B1 に '=A1、B3 に '=A3 と入力します。 これは、B1 に '=A1、B3 に '=A2 と入力 の誤りです。ごめんなさい。
お礼
前略いたします。 回答していただいてありがとうございました。 ただし、当方はエクセルの初心者であるため、 よく分からないところがありました。 始めは、関数を用いたコピーをしたしたところ うまくいったのですが、実は3行空けて行う 表を作っていまして、関数式をいろいろ変えて みたのですが、数式の意味が分かっていないせ いでうまくいきませんでした。 また、コピー元とコピー先が固定されているため この位置をずらした場合にはうまくいきません。 =IF(MOD(ROW(A1),2)=1,INDEX($A$1:$A$10,INT(ROW(A1)+1)/2,1),"") のどこを変えれば空ける行数を変更でき、コピ ー先やコピー元の先頭のセルの位置を任意に変 えることができるのでしょうか(例えばコピー 元A2からコピー先D4へ等)。 お忙しい中、申し訳ないのですが、今一度ご教 授お願い頂けませんでしょうか。 関数を使わない方法も試してみましたが、元デー タを消去しますとコピー先が「0」になってしま い使えませんでした。 しかし、当方にとって画期的なことだったのでこ の方法も今後積極的に使用したいと思っています。 草々
- misatoanna
- ベストアンサー率58% (528/896)
関数らしい関数を使わない方法です。 たとえば、A1:A10 にデータが入っていて、それを B1、B3、B5、‥‥ と一行おきに コピーすると仮定します。 1.B1 に、'=A1、B3 に '=A3 と入力します。 ※ =A1 ではありません。頭に必ず ' をつけてください。 2.B1:B4 を選択して下方にドラッグコピーします。 上記例ではデータが10個ですから、B20あたりまでですね。 ドラッグコピー以外のコピペでは、あとの処理が効きません。 3.B列を選択し、[データ]-[区切り位置] とたどり、そのまま [完了] します。 ――どうですか?
- ka3
- ベストアンサー率18% (36/194)
#1です。 すみません、逆の話しをしてしまいました。
- ka3
- ベストアンサー率18% (36/194)
[編集(E)]-[ジャンプ(G)]-[セル選択(S)]で「可視セル(Y)」を選び複写を行なうと、表示していないセルは複写の対象外とできますので、この手法を利用しております。
お礼
前略いたします。 回答していただいてありがとうございました。 ただし、当方はエクセルの初心者であるため、 今まで見たことがない画面が沢山出てきてほ とんど全くといって良いほど分かりませんで した。 これからは「マクロ」や「ショートカット」 とは何か、というところから学んでいきたい と思っております。 これからもご指導のほど、よろしくお願い申し 上げます。 草々