• ベストアンサー

Excelデータコピーについて

どうファイルのシートにデータをコピーする処理を 自動化したいのですが、 シート1のB列、C列、E列入ったデータを シート2のC列、D列、H列に出力。 のようなことをやりたいのですが、 あらかじめシート2に=セル番地で明示的にやっておけば できますが、関数を入れておくとファイルが重くなってしまうので、 シート1のデータがある分、出力させる処理を作りたいです。 自動化できる方法がありましたら教えてください。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

自動化とはVBAのことを言っているのでしょうか。 以下の手順をお試しください。 (各シート名はSheet1、Sheet2としてあります。) 1.AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test01()   Dim st As Worksheet, x As Long, y As Long, z As Long   Set st = Sheets("Sheet1")   With st     x = .Cells(Rows.Count, "B").End(xlUp).Row 'B列最終行取得     y = .Cells(Rows.Count, "C").End(xlUp).Row 'C列最終行取得     z = .Cells(Rows.Count, "E").End(xlUp).Row 'E列最終行取得   End With   With Sheets("Sheet2")     .Range(.Cells(1, "C"), .Cells(x, "C")).Value = st.Range(st.Cells(1, "B"), st.Cells(x, "B")).Value 'C列に値転記     .Range(.Cells(1, "D"), .Cells(y, "D")).Value = st.Range(st.Cells(1, "C"), st.Cells(y, "C")).Value 'D列に値転記     .Range(.Cells(1, "H"), .Cells(z, "H")).Value = st.Range(st.Cells(1, "E"), st.Cells(z, "E")).Value 'H列に値転記   End With End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります. 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

chirorin22
質問者

お礼

遅くなりましたが、ありがとうございました。 別のやり方でできました。

その他の回答 (1)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

関数を使いたくないのでしたらマクロを使うしかありません たぶんマクロも重いと思いますよ とりあえず記録マクロ(新しいマクロの記録)で作業手順を記録しマクロ化し それを再生するだけで可能です いろいろ試してみてください

関連するQ&A

  • エクセルでの比較データコピー

    エクセル2010でマクロを組んでデータ処理を簡単に行いたいのですが、 よくわからないので、教えてください! シート2のC列とシート1のD列を比較し、同じ文字列があった場合に シート2のE列をシート1のF列にコピーする。 ただし、シート2のE列に〇が入っている場合は、シート2のG列をシート1のF列にコピーする。 どなたかご教示いただけませんか? よろしくお願いします!

  • EXCELのシート間コピーについて教えてください!

    いつもお世話になります。 また、皆様のお知恵をお貸しください。 ブックにSHEET(1)とSHEET(2)があります。 SHEET(1)のD列の1行目から300行程度まで文字列が入力されております。 下記の作業をSHEET(1)のD列の文字列が終了するまでマクロ等を使って自動化したいです。 1    SHEET(2)のD列の1行目から12行目までの文字列をSHEET(2)のB1,B4,B7,B10,E1,E4,E7,E10,H1,H4,H7,H10の順にコピー 2   印刷 3   SHEET(2)のD列の13行目から24行目までの文字列をSHEET(2)のB1,B4,B7,B10,E1,E4,E7,E10,H1,H4,H7,H10の順にコピー 4   印刷 よろしくお願いします。

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • エクセル 数式のコピー・貼付について

    エクセルの数式のコピー・貼付について教えてください。 シート1にデータが1000行くらい入っているとします。    A   B   1 100  5 2 200  3 3 350  9 :  :   : :  :   : シート2のセルA1、A2に =A1*B1 シート2のセルA3、A4に =A2*B2 シート2のセルA5、A6に =A3*B3 と、2行ずつ数式を入れたいのですが、 普通にコピー貼付をするとセル番地が自動的に 増えていってしまいます。 2行ずつ、同じセル番地の数式を入れる方法がありますでしょうか。 どうぞよろしくお願いいたします。

  • Excelで離れたセルに連続したデータを貼り付けたい

    セルB5「=sheet1!C7」のデータをコピーし、 セルB7「=sheet1!C8」 セルB9「=sheet1!C9」・・・ と、連続したデータを貼り付けていきたいのですが、 セルB7「=sheet1!C9」 セルB9「=sheet1!C10」・・・ と行数も2つ飛びで貼り付けになってしまいます。 毎回ひとつひとつ入力するのが大変な手間なのですが、 なんとかならないでしょうか? もうひとつ質問です。 セルB5「=sheet1!C7」のデータを セルE5「=sheet1!C36」 セルH5「=sheet1!C65」 と行番号を29ずつずらして貼り付けたいのですがこれも簡単に貼り付ける方法はないでしょうか? やっぱり毎回ひとつひとつ入力するのが大変です・・・。

  • エクセル リンク(コピー?)エラー について

    シートの、あるセルに入力されている文字(単語や数字)を、同じブック内の別のシートの既定欄に自動的に入力されるように作表しました。   =を入力してから、入力したい語句が入っている別のシートのセル内を クリックしてエンターを押すと、普通は、そこのセルには、=シートの名前!コピー(リンク)させたいセル番地が数式バーに表示され、 シート内のその部分にはきちんとコピーされた語句が反映されていると思うのですが、一箇所どうしても反映されずに、そのセルの中にそのまま ='シートの名前'!コピー元のセル番地 が表示されてしまうところがあります。 たとえば、コピー元のセルは、シートの名前が「東京~大阪」で、番地がF7です。そのセルには「12345」という数字が入っています。 そのセルはセルの結合をしてあります。 コピー先のシート名は「総合」としてあり、数式バーに表示されているものは =’東京~大阪!F7:V7 となっていて、コピー元に入力されている「12345」は反映されません。 セルの結合は、行を幅広にとってあり、列のみV列までの結合です。 コピー元とコピー先のセルのサイズ(行も列も)が同じでないと反映されないのかと思って、 ためしに、きちんとリンクされているセルを一箇所調べてみたら コピー元のセル番地はD19となっていて、そのセルも結合してあります。 横はD19からAP1まで結合してあり、 縦は、19から21まで結合してある長方形です。 そのコピー元は、エラーになったコピー元のシートとは別のシートで、シート名は「緊急」としてあります。 コピー先は「総合」シートで、のセルの番地は「F8」となっていて、こちらもセルの結合はしてあります。 行の幅は少し広くとってあり、列のみの結合でVまで(F8:V8) となっています。 数式バーには、「=緊急!D19」となっていて 正しくコピーされています。 同じ「総合」シートの中で、正しいコピーとエラーになる箇所があり やり方は同じにしているはずなのにどうしてだろうと悩んでいます。 シートの名前に「東京~大阪」のように、記号が入っている時には、名前が’ ’で囲まれていますが それは問題がないと思うのですが。。。 どこがおかしいのでしょうか。コピー元のシートがどこかおかしいのでしょうか。 使っているソフトはエクセル2000で、OSはWIN2000です。 宜しくお願い致します。

  • 他ブックからのデータ検索・コピー(VBA)

    【Book2】(Sheet2)L1に「12-1」を入力 ↓ 【Book1】(Sheet1)で「12-1」をM列、T列、AA列から検索→M4に「12-1」があった ↓ 【Book1】(Sheet1)N4:S4のデータを【Book2】(Sheet2)M1:R1にコピー 各ブックは同一ファイルに保存 検索する文字列の重複はなし 現在は関数≪VLOOKUP≫を使い上記を行っています。 マクロを使った方がスムーズに処理できるのでしょうか。 マクロを使う場合はどのような方法が良いのでしょうか。 データ数は1000行程度、各行の25個のセルに≪VLOOKUP≫関数が入っています。

  • Excelのデータが重いのはなぜですか?

    1ファイルに3つのシートを作り それぞれ100列くらい文字を入力してます。 関数を1つ使っていたり セルの色づけをしたり 入力規則を使っているくらいなのですが 1ファイル、2.2Mも!あるんです。 何が原因でこんなに重たいデータになっているのかわかりません。 どうすれば軽くなるか、教えてください。 よろしくお願いいたします。

  • エクセルデータの並び替え

    A列とB列に文字列ばかりのデータがあります。 C列に、A列の1データに対してB列の5データが続くように並べたいのです。 A列  B列  C列 a    1   a b    2     1 c    3     2 d    4     3 e    5     4 f    6     5 g    7     b h    8     6 i    9     7 j    10     8 k    11     9 l    12     10   以下、C列には、  c 11 12 13 14 15 d 16 17 18 19 20 e 21 ・・・・と続きます。 こんなことは関数処理で可能でしょうか。 手作業でやりだしたのですが、手間がかかるので質問させていただきました。どうぞ、よろしくお願いします。

専門家に質問してみよう