プロが教える店舗&オフィスのセキュリティ対策術

こんにちは
Excel2003 を使用しています。
マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが
よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。

毎回データ行数が違う2つの表を、新しい表の上の部分と下の部分に分けてコピーしたいのです。
コピー元1 0~20行
コピー元2 0~20行  1と2の合計は、0~20行です。多くても20行まで。

コピー元1を1行目から、コピー元2の最下行を20行目に揃えて、
貼り付け先の表には、上部と下部の間に空白行が入っOKです。

(例)
コピー元1          コピー元2
 X   Y   Z         AA   AB   AC
1鈴木 千葉 男      1山本 大阪 男
2田中 東京 女      2高橋 京都 女
3                3
 ↓↓
貼り付け先
 A   B   C
1鈴木 千葉 男
2田中 東京 女
3


18
19山本 大阪 男
20高橋 京都 女

のように上部と下部に分けてコピーしたいのです。
行数は毎回ちがい、合わせて20行の場合は、空白行はなくなります。

説明が、つたなく申し訳ありませんが
よろしくお願いいたします。

A 回答 (4件)

X,Y,Z列とAA,AB,AC列に入っているそれぞれのデータをA,B,C列にコピーするということでしょうか?



X,Y,Z列とAA,AB,AC列の1~20行に違うデータが入力されるたびに実行するマクロという理解でいいですか?

質問者様のVBAのスキルによりますが、私なら以下のようなマクロを組むと思います。

1. X,Y,Z列の1~20行に入っているデータを配列(配列1とします)に入れる。
2. AA,AB,AC列の1~20行に入っているデータを配列(配列2とします)に入れる。
3. 配列1をA,B,C列の1行目から下へ向かって書き込む。
4. 配列2を逆順にソートしてA,B,C列の20行目から上に向かって書き込む。

これで処理はできると思いますが、違うデータを処理する場合は、最初にデータが書き込まれる場所A,B,C列の1~20行目はデータを削除しておく必要があります。

質問の意味を誤解しているかもしれないので、とりあえずの回答です。
    • good
    • 0
この回答へのお礼

CaveatEmptorさま

早速の回答ありがとうございます。
質問の意味はその通りです。
逆順のソートして、下から書き込む、は気付きませんでした。
VBAのスキルはほとんどありません。
配列の意味から勉強します。

お礼日時:2012/10/12 17:15

こんにちは。



条件として、
元1、元2、合計20件を超えないこと。
元1、元2、ともに1行めから始まっていること(質問文のまま)。
といことなら簡単に

Sub Re7744683j()
  Dim rcn1 As Long
  Dim rcn2 As Long
  rcn1 = Cells(1, "X").End(xlDown).Row
  rcn2 = Cells(1, "AA").End(xlDown).Row
  Range("X:Z").Resize(rcn1).Copy Cells(1, 1)
  Range("AA:AC").Resize(rcn2).Copy Cells(21 - rcn2, 1)
End Sub

とか。
    • good
    • 0

すみません、使い物になりませんでした。



Sub Re7744683c()
  Dim rCn1 As Long
  Dim rCn2 As Long
  rCn1 = Cells(1, "X").End(xlDown).Row
  rCn2 = Cells(1, "AA").End(xlDown).Row
  If rCn1 > 21 Then rCn1 = 0
  If rCn2 > 21 Then rCn2 = 0
  If rCn1 + rCn2 > 20 Then MsgBox "おおすぎます": Exit Sub
  If rCn1 > 0 Then Range("X:Z").Resize(rCn1).Copy Cells(1, 1)
  If rCn2 > 0 Then Range("AA:AC").Resize(rCn2).Copy Cells(21 - rCn2, 1)
End Sub
    • good
    • 0
この回答へのお礼

ci_moverさま
回答ありがとうございました。
早速試したところ、思い通りの結果です。
内容については、これから勉強します。
助かりました。ありがとうございました。

お礼日時:2012/10/12 17:17

> マクロを使って毎回行数が違うデータをコピー貼り付けをしたいのですが


> よく分かりません。コピー先の最終行そろえのコピーの方法もお願いします。

「よく分かりません」の意味がよく分かりません。
どんなマクロを組めばいいかヒントをくれ、と言う意味でしょうか。
代わりにマクロを組んでくれ、と言う意味でしょうか。


前者だと仮定して話を進めると、
(1)コピー先のA1:C20をクリア
(2)コピー元1を“そのまま”コピー先1行目に貼り付け
   ※提示の例だと、X1:Z2をコピー、A1に貼り付け
(3)コピー元2を“そのまま”コピー先(20-データ行数+1)行目に貼り付け
   ※提示の例だと、AA1:AC2をコピー、
    (20-データ行数+1)=19なので、A19に貼り付け
だけのコードを、ごく単純に書きます。

各コピー元の行数チェックや、合計した行数チェック、
各行のデータの有効性の確認など、複雑に書けば書けると思いますが、
提示された条件だけならコレだけで十分対応できるかと思われます。
    • good
    • 1
この回答へのお礼

tsubuyukiさま
回答ありがとうございます。
当方、できたマクロを修正するくらいの知識しかありません。
最初に作る時は、マクロの記録で行っておりました。それを手直しする程度。
今回は、それでは対応できず、いろいろ調べましたが分からず質問させて頂きました。
親切に回答ありがとうございました。

お礼日時:2012/10/12 17:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A