• 締切済み

Excelのデータから一部のデータを別シートに抽出するマクロを組みたい

kmetuの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

Sub test() Dim i As Integer, LastRow As Integer Dim c As Object Dim firstAddress As String i = 0 LastRow = Range("B65536").End(xlUp).Row + 1 With Worksheets("Sheet1").Range("A2:" & Range("A65536").End(xlUp).Address) Set c = .Find(ActiveSheet.Range("B2").Value, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do ActiveSheet.Range("B" & LastRow).Offset(i, 0) = c.Offset(0, 1).Value ActiveSheet.Range("C" & LastRow).Offset(i, 0) = c.Offset(0, 2).Value ActiveSheet.Range("D" & LastRow).Offset(i, 0) = c.Offset(0, 3).Value i = i + 1 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub でいかがでしょう。 テンプレートのシートをアクティブにした状態で実行してください。

blukissen
質問者

補足

kmetuさん、 早速ありがとうございます。 いくつか質問がありますので回答をお願いします。 Sub test() Dim i As Integer, LastRow As Integer Dim c As Object →ここのcとは何を意味しているのでしょうか? Dim firstAddress As String i = 0 →ここのiとは何を意味しているのでしょうか? LastRow = Range("B65536").End(xlUp).Row + 1 With Worksheets("Sheet1").Range("A2:" & Range("A65536").End(xlUp).Address) →”Sheet1”とは、参照先のシート名を入れればよいのでしょうか? Set c = .Find(ActiveSheet.Range("B2").Value, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do ActiveSheet.Range("B" & LastRow).Offset(i, 0) = c.Offset(0, 1).Value ActiveSheet.Range("C" & LastRow).Offset(i, 0) = c.Offset(0, 2).Value ActiveSheet.Range("D" & LastRow).Offset(i, 0) = c.Offset(0, 3).Value i = i + 1 Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End Sub でいかがでしょう。 テンプレートのシートをアクティブにした状態で実行してください。 →アクティブにした状態とは、テンプレートのシートを右クリックしてコードの表示をして上記のマクロを入れればよいということでしょうか? 初心者なので、基本的な質問をして申し訳ないのですがお答えいただけないでしょうか? どうぞよろしくお願いいたします。

関連するQ&A

  • エクセルのマクロで

    エクセルのマクロで自動で記録させることしかできないド素人です。マクロで置換をしたいのですが、普通の置換ではなく例えば一枚目のシートのあるセルに花子さん、2枚目シートのあるセルに太郎さん、そのとなりのセルに次郎さんというようになっていたとします。これをマクロで花子さんを置換して太郎さんとその隣に次郎さんもくるようにしたいのですが可能でしょうか。または置換だと1つのセルに対して2つのセルは無理かもしれないので、ある条件の時に(太郎さんの時に)隣に次郎さんが貼り付けられるようにする方法はありますか。今までは手動で花子さんのところに太郎、次郎の両方のセルをコピーで貼り付けていました。これを多数の置換を登録してマクロにすればとても便利なのですがこのようなことは可能でしょうか。

  • エクセルで抽出したデータを別シートにコピーしたいです

    エクセル2003を使用しています。 例えば、以下のような表があります。  ABC 1あ10 2い15 3あ20 4 A列が条件となり、たとえば「あ」のデータだけ抽出して、そのデータを別シートにコピーします。 同じく「い」だけを抽出して、また別のシートにコピーします。 いままでは、オートフィルタで抽出して自分でコピーをして貼り付けしていましたが、日々データが次の行に追加になるので、毎回オートフィルタしてコピーするのは大変です。 関数か、マクロかVBAを使ってする方法はありますでしょうか。 できれば日々追加になるデータのみをすでにある別シートの前日までのデータの下に追加できるようになればいいと思うのですが。 知識が乏しくできません・・・ よろしくお願いいたします。

  • 複数のシートからデータを抽出し別シートに纏める

    業務で毎日エクセルを使っています。 予め用意された表にデータを入力し、決まった時間にメールに添付して報告しています。 月に一度、毎日入力したデータを別のシートに纏めるのですが、1日分ずつコピペしており、マクロを使って時間短縮できないかと考えるようになりました。 なにぶん最近マクロという言葉を覚えたのでマクロを組むにまでは至っておりません。 どなたか良いアドバイスをいただければと思い、質問させていただきました。 【前提】 業務で使うPCはWindowsXPでExcelは2003です。 入力する表は決まった形式であり、セルの位置も同じです。 1日最大で5シート程使いますが、日によっては1シートの時も2シートの時もあります。 毎報告時に表が全て埋まることはなく、さっき報告した時は5行だったけど次の報告の時は1行だったりします(逆の場合もあります) 月に最大で110シートほどになりますが、先月は70シート程でした。 【やりたいこと/欲しい結果】 ・表のセルからデータがある行を抽出し、別シートに纏める 具体的なセルは、(1)D5~M14の範囲と、(2)D17~M26の範囲です。 ・シート1からシート100の(1)を日付順にまとめて別シート(例:まとめ1)に ・シート1からシート100の(2)を日付順にまとめて別シート(例:まとめ2)に 不慣れな上、質問を頂いてもすぐに返答できないかもしれませんが、よろしくお願い致します。

  • Excel データの一部を別シートにコピー

    Excelで、データ行のどこかをクリックし、ボタンを押したとき、その行を別々のシートに分類してコピーさせるマクロを作りたいと思っています。 このとき、コピー先のシートをA列のデータで区別したいのです。 1.クリックした行のA列のセルを判定し、そのセルのデータを読み取る方法 2.読み取ったデータ(文字)を、コピー先シート名に指定する方法 このマクロの記述方法を教えてください。よろしくお願いします。 コピー範囲を指定し、貼り付け先のシートをアクティブにできれば、あとは記録マクロをつないで作るつもりです。

  • エクセルで別シートにデータ抽出したい

    一覧表として作成したシートのデータのうち、ある条件のものだけ別シートにデータ抽出するにはどうしたら良いですか? 例えば、 NO. 担当 金額 1  佐藤 200 2  佐藤 100 3  鈴木 200 4  佐藤 400 とある「一覧表」シートのデータから 担当:佐藤のデータだけ抜き出した表を別シート(「個人別」シート)に作成したいのです。 できれば、「一覧表」に新データを追加する度に、「個人別」シートにもデータが自動反映するようなものが望ましいのですが。 そんなことは可能でしょうか? アクセスを使えば簡単にできるかとは思いますが、アクセスがないので、エクセルで代用できればと。 宜しくお願いいたします。

  • エクセルのデータ抽出について

    エクセルのデータ抽出(?)について質問なのですが、 例えばシートで○○店、▲▲店、××店というように分かれていて、それぞれのシートの中に、同じような表があり、    A      B 1  氏名    更新日 2  鈴木太郎  2008/12/20 3  佐藤花子  2009/03/15 といったように、更新が必要な人だけがBのセルに更新日が入るとします。(更新不要の人は空白です。) この更新日が入力されている人の行を、抽出するような感じで別シートへ自動で出来るのでしょうか?(更新必要なくなって、更新日を空白にしたら、抽出したほうも自動で消えるような)

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

    次のようなシートがあります。(シート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列   B列     C列   D列 No.   会員名   条件1  条件2 1     山田花子  ○    ○ 2    田中太郎  ○   (空白)              ×    ○              (空白) ○ 会員は200人くらい、上記のように条件は4種類です。 この表の外(できれば別シート)に条件が○○の人の名前がずらり、 ×○の人の名前がずらり、というように それぞれの条件に合った人の名前だけが表内の順序どおりに書き出され、 元データを更新すると、条件ごとに書き出した名前も 自動的に(または更新ボタン一つで、) 更新されるようにしたいのです。 マクロはできません どうしたらいいですか?

  • Excel2007 データ抽出について

    こんにちは。 教えてください。 現在、Excel2007を利用しております。 シート1に全体のデータ(項目:氏 名 性別 年齢など)があります。 シート2に、例:21歳の男性のみのデータを抽出したいと考えております。 シート1は随時追加していくデータとなっております。 シート2は、シート1にデータを追加すると自動的に更新されるようにしたいのです。 クエリや、フィルタオプションやマクロなども考えましたが、 難しく、出来上がりませんでした。 どなたか、詳しく教えて頂けませんでしょうか? 困っております。 よろしくお願いいたします。

  • エクセルの抽出に関するマクロ

    (1)OSはVistaです。 (2)エクセル2007を使用しています。 (3)シートは「会員情報」「抽出条件」「抽出結果」の3枚です。 (4)「会員情報」シートのA5からR588までデータ(氏名、住所、電話番号など)が入っています。A5からR5は、タイトル行(フィールド)です。R列は「フォームコントロール」で挿入したチェックボックスです。。 (5)「抽出条件」シートには、会員の種類による抽出ができるような条件(正会員、準会員、協賛会員など)が設定してあります。 (6)「抽出結果」シートには、抽出された結果がコピーされます。 「会員情報」シートのデータを、「抽出条件」シートで指定した条件で抽出し、「抽出結果」シートにコピーするマクロは成功しました。 チェックボックスにチェックを入れた会員を抽出し、その方たちの郵便用ラベルを作成するのが最終目標ですが、今は「会員情報」シートのチェックボックスを使った抽出とその結果のコピーができないところでストップしています。チェックボックスを使った抽出とその結果のコピーのマクロを教えてください。