ExcelマクロでSheet2の情報をSheet1のA1に並べる方法を教えてください

このQ&Aのポイント
  • Excelマクロを使用して、Sheet2にある情報をSheet1のA1に1列で並べる方法を教えてください。また、Sheet2の内容が変わる可能性があるため、マクロを走らせる際にはデータの終わりをチェックする必要があります。
  • Excelマクロを使い、Sheet2にある情報をSheet1のA1に1列で並べたいです。Sheet2の内容は変更されることがあるため、マクロを実行する際にはデータの終わりを確認する必要があります。
  • Excelマクロを活用して、Sheet2の情報をSheet1のA1に1列で表示する方法を教えてください。ただし、Sheet2の内容が変化する可能性があるため、データの終わりをチェックする必要があります。
回答を見る
  • ベストアンサー

Sheet2にある情報をSheet1のA1に1列で

マクロを作りたいのですが、以下のようなものをどうすればできるかで詰まっています。 Sheet2にある情報をSheet1のA1に1列(A列B列C列の順)で並ぶようにしたいです。 Sheet2の内容は変わることがあるので、データがどの行まで入っているかはマクロを走らせるときにチェックしないとわからないかと思います。 [Sheet1] 111 222 333 aa bb aaa bbb ccc ddd eee -------------------------- [Sheet2] A B C 1 111 aa aaa 2 222 bb bbb 3 333 ccc 4 ddd 5 eee 素人な質問かもしれないですが、調べてもわからなかったので、教えていただけると幸いです。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

>A列 F列 H列にあるデータのみ 他の方への投げかけでは,また違う場所にあるデータを転記したいとなっていますよね。 「具体的に」どこからのデータを転記したいのかによって,適切なマクロの書きぶりが違うということを理解してください。 ○A列,C列,E列,G列のように規則的に飛び飛びの列を処理したいと言いたかったときは sub macro2()  dim i as long  dim r as long  worksheets("Sheet1").range("A:A").clearcontents  for i = 1 to 7 step 2  r = worksheets("Sheet2").cells(65536, i).end(xlup).row  worksheets("Sheet2").cells(1, i).resize(r, 1).copy _   destination:=worksheets("Sheet1").range("A65536").end(xlup).offset(1)  next i  worksheets("Sheet1").range("A1").delete shift:=xlshiftup end sub ○通常はあまり考えにくい状況ですが,A列,F列,H列とデタラメな列を処理したい場合 sub macro3()  dim i as variant  dim r as long  dim a as variant  a = array(1,6,8)  worksheets("Sheet1").range("A:A").clearcontents  for each i in a  r = worksheets("Sheet2").cells(65536, i).end(xlup).row  worksheets("Sheet2").cells(1, i).resize(r, 1).copy _   destination:=worksheets("Sheet1").range("A65536").end(xlup).offset(1)  next i  worksheets("Sheet1").range("A1").delete shift:=xlshiftup end sub #補足 思いつきで補足質問を投げるから,言葉足らず説明不足で「良いアドバイス」が得られません。結果してお互いに二度手間三度手間になることが非常に多くあります。まさにこのご相談のように。 次の課題に進みたい時は思いつきで「ついでに聞いちゃえ」じゃなく,一回ご相談を「解決」で閉じてから,改めて「今度は具体的にこういう状況でこうしたい」とキチンとご相談を書くことを覚えてください。

iguigu_n
質問者

お礼

とてもわかりやすく、理解できました。ありがとうございます。 今後質問するときは気お付けます。

その他の回答 (3)

  • kigoshi
  • ベストアンサー率46% (120/260)
回答No.3

Sheet2はA,B,Cの3列のみなのでしょうか? もしそれ以降もある可能性があるのなら Sub sample() Dim rIdx, rIdx1, cIdx As Long Sheets("Sheet2").Activate Do Until Cells(1, cIdx + 1).Value = "" cIdx = cIdx + 1 For rIdx = 1 To Cells(Rows.Count, cIdx).End(xlUp).Row rIdx1 = rIdx1 + 1 Sheets("Sheet1").Cells(rIdx1, 1).Value = Cells(rIdx, cIdx).Value Next Loop End Sub ではいかがでしょう?

iguigu_n
質問者

補足

ありがとうございます! すいません、言葉が足りなかったのですが、 連続した列ではなく、 A、C、F、H、J というように列を指定したいです。どう書き換えればいいでしょうか?

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

一例です。 Sub sample() Set st1 = Sheets("sheet1") Set st2 = Sheets("sheet2") For c = 1 To 3 For r = 1 To st2.Cells(Rows.Count, c).End(xlUp).Row cnt = cnt + 1 st1.Cells(cnt, "A") = st2.Cells(r, c) Next Next End Sub

iguigu_n
質問者

補足

ありがとうございます! しかし列をつないだときに、間に空白行が1行入ってしまうようです、、

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

こんなカンジ: sub macro1()  dim i as long  dim r as long  worksheets("Sheet1").range("A:A").clearcontents  for i = 1 to 3  r = worksheets("Sheet2").cells(65536, i).end(xlup).row  worksheets("Sheet2").cells(1, i).resize(r, 1).copy _   destination:=worksheets("Sheet1").range("A65536").end(xlup).offset(1)  next i  worksheets("Sheet1").range("A1").delete shift:=xlshiftup end sub

iguigu_n
質問者

補足

ありがとうございます! ちなみになのですが、 A列 F列 H列 にあるデータのみこのマクロを適用させてシート1にコピーしたい場合はどのように記述すればいいのでしょうか??

関連するQ&A

  • 【少し急いでます】エクセルについて教えてください!

    Excel2000を使っています。 A列に重複するデータがあり、B列に別データがあります(20000行強) 例)     A  B 1  001 aaa 2   001 bbb 3   001 ccc 4   002 aa 5  002 bb 6  003 aaa 7  003 bbb 8  004 ddd 9   004 eee 10  005 aa 11  006 bbb A列で重複する001は3行あり、重複しているデータは1行にまとめてB列のaaa、bbb、cccをつなげたいです。(わかりづらくてすみません) 例)     A      B 1  001  aaa・bbb・ccc 2  002   aa・bb 3  003  aaa・bbb というようにまとめたいです。 どのような方法がありますでしょうか? よろしくお願い致します。

  • A列にあったものには1、C列にあったものには2

    シート1の内容をVBAをつかってシート2のようにしたいです。 つまり、シート1の2行目以降のデータをシート2のB列につなげて、 A列には シート1の1行目に記載している番号をふっていきます。 もともとA列にあったものには1、C列にあったものには2、E列にあったものには3と振りたいのですが、どのようにマクロを書けばいいでしょうか? [Sheet1]   A  B  C  D  E 1 1  2  3 2 aa aaa aaaa 3 bb bbb bbbb 4 cc cccc 5  dddd ----------------------------- [Sheet2] A B 1 1 aa 2 1 bb 3 1 cc 4 2 aaa 5 2 bbb 6 3 aaaa 7 3 bbbb 8 3 cccc 9 3 dddd

  • エクセル:別のシートへ抽出したデータをリンクさせたい。

    次のようなシートがあります。(シートAとします。)     A    B    C  … [1] 001  AAA [2] 002  BBB  あああ [3] 003  CCC [4] 004  DDD   [5] 005  EEE  いいい C列の空欄データは除外して、C列にデータが記入されているものだけ別のシートに(シートB)に行ごとリンクさせたいと考えています。 (この場合だと2列と5列です。) シートAには今後もデータが追加される想定で、新しいデータで当てはまるものは自動的にシートBに反映されるようにさせたいのですが…。 マクロ等は詳しくありません。できるだけ簡単にできる方法があればご教授していただきたいと思います。 よろしくお願いいたします。

  • エクセルで列にあるユニークなデータの個数が知りたい

    おはようございます。 エクセルでA列に以下のようなデータがあるとします。 この中で何種類のデータがあるのかを知りたいのです。 この場合は、AAA,BBB,CCC,DDD,EEEの5種類なので5という答えが欲しいのです。 ただし、A列に入るデータは非常に多岐(800種類以上)に渡ります。 また、印刷を前提としてるためソートなどはできません。 さらに1枚のシートにこのようなデータがいくつかあるので、その決まった範囲内で個数を抽出する必要があります。 なにとぞ皆様のお知恵をお貸しくださいませ。 よろしくお願いします。 AAA AAA BBB CCC AAA DDD DDD BBB DDD DDD EEE EEE

  • EXCELのVBAで空白列を削除して左づめにできますか?

    いつも参考にしています。まだ、マクロの記録にチョット手を加えて自動化?している程度の腕前ですが? 仕事の都合で下記の問題を解決しなくてはならなくなり、皆様のお知恵をお借りしたいと思い質問させて頂きます。 エクセルのワークシートに空白のセルがランダムに入っているデータがあります。これを、ある列まで(例ではD列までの左の空白セルをなくして左づめのデータとしたいのです。 (例)  | A | B | C | D | E | 1|AAA|BBB|CCC|DDD|EEE| 2|   |BBB|CCC|DDD|EEE| 3|AAA|   |CCC|DDD|EEE| 4|AAA|   |CCC|   |EEE| 5|   |   |   |DDD|EEE|     ↓  | A | B | C | D | E | 1|AAA|BBB|CCC|DDD|EEE| 2|BBB|CCC|DDD|   |EEE| 3|AAA|CCC|DDD|   |EEE| 4|AAA|CCC|   |   |EEE| 5|DDD|   |   |   |EEE| ここで、E列以降は詰めないでほしいのです。 できれば、VBAで実現したいのですが、どのような考えで、どのようなコード?を書けばよいのか教えてください。 質問の仕方も用途を得ないで、失礼な質問になっていると思いますが、よろしくお願いします。

  • 【VBA】シートの内容を別シートへ転記する方法

    1シート目のA列には品番が沢山並んでおり、B列、C列に内訳、D列に合計が有ります。例)参照 下記の処理をしたいです。 ------------------------------------------------------------------- 2シート目へ1行目の見出しとAAAの品番の行を転記 3シート目へ1行目の見出しとBBBの品番の行を転記 同様に、A列最終行迄繰り返しシートを作成 ------------------------------------------------------------------- A列の品番が変わる行迄を一まとまりとして行選択する方法にて コードをお教え頂きたく、宜しくお願いします。お教え頂いた内容は理解する様努めます。 例) 内訳1 内訳2 合計 AAA ○○○ ○○○ ○○○ AAA ○○○ ○○○ ○○○ BBB ○○○ ○○○ ○○○ BBB ○○○ ○○○ ○○○ CCC ○○○ ○○○ ○○○ CCC ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ DDD ○○○ ○○○ ○○○ 以下略

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • 抽出して並べ替えたい

    初めまして 非常に悩んでいます。 エクセルシートの列に下記のようにデータが並んでいます。(文字列) AAA bbb ccc (空白) BBB ddd eee (空白) AAA bbb ccc (空白) AAA eee ggg 並べ替え後 AAA AAA BBB bbb eee ddd ccc ggg eee 尚、列上でセル位置は任意で、空白行も任意です。(1つ以上です) できれば関数でお願いします。 VBAの場合、使用したことがないので詳しくお願いします。

  • 複数のシートから抽出

    検索値シート1【B】111で行い、検索範囲をシート2~4の【B】列全てを検索して一個だけ検索できたら【A】列AAAをシート1の【C】に検索結果を表示させます。シート2~4全て内容は違います。 シート1【B】列500以上全て検索値とします。関数でやり方を探しております。お分かりの方がいらっしゃれば教えてください。 シート2~4 【A】  【B】  AAA ・ 111 BBB ・ 222 CCC ・ 333 DDD ・ 444 EEE ・ 555 シート1 【A】 【B】 【C】      111        222      333

  • EXCEL VBA 行列操作

    どなたか教えてください。 下記の様にA1からH5までの範囲に値がある行とない行があります。 空白セルを無視しA10に行列を操作し(行列入れ替え?)、さらに上詰め でコピーしたいのです(上にある行から列順に)。 よろしくお願いします。 例です  A   B   C   D   E   F  G   H 1 2                   aaa bbb 3 ccc ddd eee fff ggg 4 5 hhh ~ 10 aaa 11 bbb 12 ccc 13 ddd 14 eee 15 fff 16 ggg 17 hhh

専門家に質問してみよう