• ベストアンサー

エクセル最終行の下に貼り付け

VBAで以下の作業を教えて下さい。 Sheet1のB列に入力済みのセルが何行かあります。 その入力済みのセルの値をコピーして、Sheet2のA列の入力済みの最終行のすぐ下の行に貼り付ける。 *Sheet1のB列の入力済みのセルの行数は毎回変わります。 *Sheet2のA列には一番最初は何も入力されていない状態です。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! 補足を読ませていただきました。 Sheet1のB・C列をSheet2のA・B列の最終行以降に!ということなので・・・ おそらくSheet1のB・C列の行数(データ量)が違うのが普通だと思いますので、 2列を範囲指定 → Sheet2のA列もしくはB列の最終行以降に貼り付け!という操作では 空白セルが出来てしまうと思います。 もちろんそれを削除するコードを作れば良いのですが、今回は2列だけだというコトですので 単純に前回の操作を2回繰り返すコードにしてみました。 Sub test2() Dim i, j As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") i = ws1.Cells(Rows.Count, 2).End(xlUp).Row j = ws1.Cells(Rows.Count, 3).End(xlUp).Row Range(ws1.Cells(2, 2), ws1.Cells(i, 2)).Copy ws2.Activate ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste Range(ws1.Cells(2, 3), ws1.Cells(j, 3)).Copy ws2.Activate ws2.Cells(Rows.Count, 2).End(xlUp).Offset(1).Select ActiveSheet.Paste Application.CutCopyMode = False ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub こんな感じではどうでしょうか? ※ じっくり考えればもっと良い方法があるかもしれません。 この程度でごめんなさいね。m(_ _)m

fightman11
質問者

お礼

何度もありがとうございました。 すべて解決しました、助かりました。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! Sheet1・Sheet2ともに1行目は項目行でデータは2行目以降にあるとします。 一例です。標準モジュールにコピー&ペーストしてマクロを試してみてください。 Sub test() Dim i As Long Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") '←Sheet名(sheet1の部分)は実際のSheet名に! Set ws2 = Worksheets("sheet2") '←こちらのSheet名も実際のSheet名に! i = ws1.Cells(Rows.Count, 2).End(xlUp).Row Range(ws1.Cells(2, 2), ws1.Cells(i, 2)).Copy '↑Sheet1の1行目から場合は「ws1.Cells(2, 2)」を「ws1.Cells(1, 2)」に! ws2.Activate ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select ActiveSheet.Paste Application.CutCopyMode = False ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Select End Sub こんな感じではどうでしょうか?m(_ _)m

fightman11
質問者

補足

ありがとうございます。 バッチリできました。 因みにSheet1のB列だけじゃなくB列とC列の両方をコピーして、 Sheet2のA列とB列に同じように貼り付けの場合なら、どこを変化させたら良いのですか?

関連するQ&A

  • シート1のC列の最終行をコピーして同じ行に値貼り付けしたい

    シート1のC列の最終行を取得して その行を丸々値貼り付けするマクロを作りたいと思います。 シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け すると、その行のA、B列に日付が入力される関数が入っています。(下まで) 関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。 シート1の最終行に貼り付け Sheets("Sheet3").Select Range("B18").Select Selection.Copy Sheets("Sheet1").Select Range("C65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub 最終行をコピーして値貼り付け Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row Range("A6:C" & 最終行).Select Selection.Copy Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?

  • エクセル(2003)のコピーと貼り付けについて。

    エクセル(2003)のコピーと貼り付けについて、操作を自動化したいです。 VBA初心者です。 同じフォルダ内にAファイルとBファイルがあります。 Aファイルにはシート1からシート4まで有り、シート1とシート2にシート3と4を比較したデータを表示させています。 シート1とシート2はA1からG1まで項目として、A2からデータが表示されます。約20行程度、表示される行数は毎日変わります。 Bファイルにはシート1しかありません。A1からG1まで項目とし、A2からデータが表示されています。約100行。毎日変わります。 (Aファイルのシート1とシート2の表示されているデータを貼り付けていく為) Aファイルのシート1に表示されているデータ(A2から)を仮に20行としBファイルの101行目(入力されているデータのすぐしたの行)に貼り付け、Aファイルのシート2に表示されているデータ(A2から)を仮に20行とし、120行目に貼り付け。 毎日コピーする範囲や貼り付けをするセルが変わっていく、固定の範囲、セルではない。この作業を毎日、コピー貼り付けで操作しています。 この操作をラクにしたいです。 困っていることは、コピーする範囲が毎日変わってしまう。(行数が増減するため) 貼り付けるセルも変わってしまう、(行数が増減するため) 分かりずらい説明になっていましたら、申し訳ないです。 よろしくお願いします。

  • エクセルで、検索したセルの下の行を出したいときは?

    たとえば、一つのシートに数字が入った表があるとして(シート1)、 隣のシート(シート2)でA1のセルに数値が入るとシート1から 同じ数値を探し出す(作業しているのはB1)。 その探し出したセルの下の行にあるものを出したいのですが、 その方法がわかりません。関数の数式の中で、 ”+1行”とか、”+1列”というのは、 どういった入力をすればいいのでしょうか? ちょっと説明がうまくできないので、伝わりづらいと 思いますが、補足していきますので、よろしくお願いします。

  • Excel VBA - 数式のコピーと値貼り付け

    A~Cを使った表があり、AとBには値が入力されています。 C2に"=A2+B2"と入力し、その式を、A列の最終行と同じ行までコピーし、C2からCの最終行までの範囲をコピーして同じ範囲に値貼り付けするにはどういうVBAを書けばいいでしょうか。 宜しくお願い致します。

  • エクセル VBA

    最終行から順番に下へ同列で入力するVBAを教えて下さい。 EXCELのVBAで教えて下さい。 シート1のA列にはB列が入力されると自動入力されるNo.があり、C~G列もB列が入力されると自動入力されます。 B列には日付が、H列には3~4桁の数字が入力したいのですが、 入力行は必ず最下行のセルB、Gな為、VBAでフォームを作成し、 入力実行ボタンを押すことにより、最下行のセルB、Gに反映されるように したいです。 又、上記入力後に、シート2のH~N列をコピーして、シート3のA~G列に値のみの貼り付けを行い保存した後、シート3のA~G列をコピーして csvファイルを作成して保存したいです。 一連の流れを、フォームの入力実行ボタンを押すことで実行したいのですができるのでしょうか? 宜しく御願い致します。

  • 最終行に合計(最終行が列によって異なる場合)

    エクセルVBAに於いて質問させて頂きます。 タイトルにも書かせていただきましたが、 A列に行数可変のデータ(文字列)があり、 B列に行数可変のデータ(数字)があり、 A列の行数>=B列の行数の条件とき、 A列の最終行+2の位置のA列に文字で合計 A列の最終行+2の位置のB列にsumを表示する場合、 どのようにすれば出来ますでしょうか。 A列の最終行+2の位置のA列に文字で合計は With Range("A3") .End(xlDown).Offset(2, 0).Formula = "合計" End With でいけると思うのですが、 A列の最終行+2の位置のB列にsumを表示する場合どのようにすればいいのかわかりません。 ご教授のほどお願い致します。

  • エクセルで下の行から合計とかを求めたいです。

     ほぼ毎日最終行の所にA列に日付 B/C/D/列に数値を加えているという作業を繰り返しています。従って下の方が最近入力した値になっている状態です。 私がしたいのはこの最近入力した(最終行)行から5行上までの各列の合計や平均値をそれぞれ1番上の方に自動で表示したいのですがいろいろと調べても分かりません。(行を追加するたび範囲を指定し直すというのがつらいです。) このような事はエクセル2003で可能でしょうか?  調べた中では最終行を取得するとか最終行の値を表示するというのは見つけれたのですがここ何日も悩んで解決できません。  よろしくお願いします。

  • 列最終行を取得し別列に貼付け

    VBAでA列最終行を取得しB列にその行の値を貼付けることができますか宜しくお願いします。

  • Excel VBA B列を検索して1行下をコピぺ

    はじめまして。 VBAを始めたばかりですが、自分ではどうにもならないので、教えていただければと思い、初めて質問致します。 A1~G1、1行目から1000行目まで各セルに数字がランダムに1つずつ入っているデーターSheet1があり、コマンドボタンを押すことによってMsgBoxに入力した数字をB列を下に検索していき、例えば、数字の8が入力されたら、B1から下にB列に8が出現したらそのセルの1つ下の行(A列~G列まで)をコピーしてSheet2に抽出したいと考えているのですが、なかなか出来ず、困っています。 イメージとして A B C D E F G H I 1 5 14 30 25 30 3 9 2 22 34 6 7 29 49 3 3 1 8 20 4 10 6 45 4 30 15 34 50 2 5 9 5 11 8 45 7 6 20 1 6 40 8 48 25 36 4 10 7 21 22 30 28 6 7 36 8 2 3 50 2 1 43 6 と、データがSheet1に仮にあって、8が入力されたなら4行目の 30 15 34 50 2 5 9 と 6行目 40 8 48 25 36 4 10、7行目 21 22 30 28 6 7 36という様に抽出されてSheet2に 上から順に貼り付けられる様にしたいので、皆様の御知恵をお貸しいただければと 思っております。かなり複雑かとは思いますが、どうか宜しくお願いいたします。 FINDやOFFSET、IF文、ループ等を使ってみましたが私のレベルでは全く話になりませんでした。 まだVBAかけだしなもので、なるべ簡単なくプログラムでお願いいたします。

  • Excelマクロで行を分割してコピーしたいのですが・・・

    いろいろなサイトで調べたのですが、方法が見つからずご質問させて頂きます。 Excelシートの中で値が入っている行まで順番に読み、A列のセルの値が'東京'かつB列の値が'2'以上の行があった場合に、その行をB列の値の数だけその行の下にコピーで挿入したいのですが、どのようなマクロにすれば良いかご教授頂けないでしょうか? 例) セルA1='東京' セルB1='3' の場合、 ---------------------------------- セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' セルA1='東京' セルB1='1' ※セルB1を値の数だけ分割し、なおかつ値を'1'にする ※分割が終わったら、分割元の行を削除する ※その他の列の値はそのままコピーする 以上、宜しくお願い致します!

専門家に質問してみよう