• 締切済み

EXCEL2010 マクロにつきまして

excel vbaでマクロが作りたいのですが、まったくの初心者で 試行錯誤していますが、なかなか出来ずに困っています。 どなたか、教えていただけませんでしょうか。 ○sheet1 --日付---|A-B-C -------------------- 2013/1/20|1 2 3 2013/1/21|4 5 6 2013/1/22|7 8 9 2013/1/23|5 4 3 2013/1/24|4 5 6 2013/1/25|4 4 4 2013/1/26   ・   ・   ・ ○sheet2 実行ボタンを作成 日付を入力して実行ボタンをクリックすると指定した日付のデータが抽出される 例 2013/1/22 → 実行 A B C ------- 7 8 9 このようなマクロを組みたいのです。 わかりづらくて申し訳ありません。 また、初心者向けのおすすめの参考書や、ホームページがありましたら 教えて頂けると助かります。

みんなの回答

noname#192382
noname#192382
回答No.2

時間かかって、やっと出来ました。すでに回答がありますが、回答させてください。 下のマクロをコピーしてあなたのマクロを作って、キーの指定をコントロール+ e としてください。 そして 第2シートのA2iに日付を入れてから、コントロールキーを押しながら同時に e キーを押すと、希望のデータが第2シートのB2,C2,D2にえられます。 あなたのマクロの作り方ですが、 1 メニューバーのツールを選び、マクロの新しいマクロの記録を選び、開始OKにしてすぐ終了にします。 2 メニューバーのツールを選び、マクロのマクロを選び先に記録したマクロを編集するにします。 3 私のマクロをこぴーしてあなたのマクロに貼り付けます。 4 保存します Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2013/1/20 ユーザー名 : ' ' Keyboard Shortcut: Ctrl+e ' 'Worksheets(1).Activate Dim mygyo As Integer For mygyo = 2 To 7 If Worksheets(1).Cells(mygyo, 1) = Worksheets(2).Cells(2, 1) Then Worksheets(2).Cells(2, 2) = Worksheets(1).Cells(mygyo, 2) Worksheets(2).Cells(2, 3) = Worksheets(1).Cells(mygyo, 3) Worksheets(2).Cells(2, 4) = Worksheets(1).Cells(mygyo, 4) Else End If Next End Sub 第1シートのデータの数が多い場合は上のプログラムの下から9行目の7を合わせるよう訂正してください。 参考書はエクセルのVBAをキーワードにして沢山ありますからあなたが理解できるものを選んでください。

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

こんばんは! なかなか回答がつかないようなので・・・ 質問にある、Sheet1のA・B・Cは列番号ではなく、項目と判断して良いのですよね? そうであれば↓の画像のような配置だと解釈しての一例です。 Sheet1のA列に重複データはないという前提です。 画像通りの配置でOKであれば、関数だけで大丈夫だと思います。 Sheet2のA3セルに =IF($A$1="","",VLOOKUP($A$1,Sheet1!$A:$D,COLUMN(B1),0)) という数式を入れ、列方向へオートフィルでコピー! これだけで良いと思います。 どうしてもVBAでやりたいのであれば >実行ボタンを作成 >日付を入力して実行ボタンをクリックすると指定した日付のデータが抽出される を考慮すると Sheet2の 開発 → 挿入 → ActiveXコントロール → コマンドボタン を配置 挿入したコマンドボタン上でダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてみてください。 Private Sub CommandButton1_Click() Dim i As Long, c As Range, wS1 As Worksheet Set wS1 = Worksheets("Sheet1") If Range("A1") <> "" Then Set c = wS1.Range("A:A").Find(what:=Range("A1"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then i = c.Row With Range("A3") .Value = wS1.Cells(i, "B") .Offset(, 1) = wS1.Cells(i, "C") .Offset(, 2) = wS1.Cells(i, "D") End With End If Else MsgBox "検索データが未入力です。", vbOKOnly Range("A1").Select End If End Sub ※ 1行目と最終行はダブルクリックした時点で表示されていますので、 2行目以降から「End Sub」の前の行までをコピー&ペーストします。 こんな感じをご希望だったのでしょうか?m(_ _)m

関連するQ&A

  • エクセル 抽出マクロについて

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

  • Excel2000マクロ

    お世話になっております。 マクロのことで教えてください(マクロ初心者です(^_^;)) A列・・日付 B列・・時刻 C列・・数値データ “時刻”が2秒おきのデータなので1分おきのデータを抽出したいので、D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、 B列がX軸でC列がY軸のグラフを作ります。 これをマクロで記録して自動的にやりたかったのです。 ですが、 「D列にSECOND関数を使って秒だけを抜き出し、 オートフィルタで“0”だけを抽出し、これで1分おきのデータを抽出し、・・」 のところは、うまくマクロで自動化できるのですが、 別シートに出来たグラフを見ると、一番最初に記録して作ったグラフがそのまんまできてしまいます。 次のデータでグラフをつくりたかったのですが。。 これはどうしてでしょう? グラフまではうまくできないのでしょうか?

  • マクロについて教えてください

    マクロ初心者です。 1日の各人の売り上げ数をシート1に入力しており、マクロのボタンを押すと シート2の同じ日の所に売り上げ数を飛ばそうと作っているんですが どうしてもうまくいきません。 シート1     5/25←日付     名前    売上個数     A君      59個     B君      60個     C君      67個 シート2             名前         A君  B君  C君   5月   25 水  59   60    67   ←25日の所にシート1の日付をみて、同じ日付の所に   26 木                  売上個数を飛ばしたい   27 金    どういうマクロを組んだらいいか教えてください。 よろしくお願いします。

  • Excel2000でマクロの「ツール」から実行を出来なくする方法

    VBAをシートの「ツール」-「マクロ」-「実行」を出来なくする方法を教えて下さい。 ただ、VBA自体を動かなくさせるのではなく、あくまでもシート上に「ツール」から実行させない方法です。 ボタンに登録してあるマクロは、押す事で実行させたいです。 「ツール」-「マクロ」へ行くのをパスワード管理で制御する方法でも良いです。 Excel2000使用の初心者です。よろしくお願いします。

  • WinXP/Excel2002 でマクロ初級者です

    現在、仕事でexcelファイルAに、シート1枚につき1日分のデータを入力しています。 sheet1⇒7/1、sheet2⇒7/2、という風に。 その入力したデータを、1週間ごとにクライアントに報告するため、 別のexcelファイルBの1sheet内に決まったフォーマットにて、 手入力で入力しています。 ファイルAの各シートの中の決まった複数のセルの値をコピーして、 ファイルBの各シートの中の決まった複数のセルにそれぞれ貼り付ける作業を マクロを組んでボタン1つで実行したいと思っているのですが、 そのようなことは可能でしょうか?また、上記のマクロを以下の条件のもとで可能ですか? ・ファイルAとファイルBの格納場所は、同じサーバ内の別のフォルダ内 に保管されています。 ・マクロ実行する際、それぞれのファイルA,Bをその都度起動しないで、 ファイルAの指定したセルの値をファイルBの指定したセルへ反映したいです。 ・ファイルCにマクロボタンをつけてマクロを組み、実行したいので、マクロ実行時には、  ファイルCだけ、その都度起動したいです。 ・そのファイルCの保管場所は、ファイルBと同じフォルダ内に入れたいです。 例) Aの格納場所:\\ServerA\C_社内\週報\7月\週報(7月第1週).xls Bの格納場所:\\ServerA\C_社内\日別集計\7月\週報(7月第1週).xls Cの格納場所:\\ServerA\C_社内\週報\7月\週報マクロ.xls 説明が分かりにくくてすみません。 ご教授のほど宜しくお願いいたします。

  • 【VBA】マクロについて

    【VBA】マクロについて質問です。 マクロで複数のシートの特定のセル(A5(日付)、A7(社名)、B3(担当者)など)を別ブックのひとつのシートにまとめて、 日付 社名 担当者 シート1 A5 A7 B3 シート2 A5 A7 B3 シート3 A5 A7 B3 のように下へ下へ積み上げていくにはどうゆうマクロを組めばいいでしょうか。 同じ作業を複数のファイルで行わなければいけないため、マクロを組みたいのですが、よくわかりません>< ファイルによってシートの数が違うので、それにも対応すると有難いです。 どうぞよろしくお願いいたします。

  • EXCEL2003でマクロを作りたいのですが教えて下さい。

    エクセル2003を使っています。 マクロの初心者なので、 下記のようなマクロの作り方を詳しく教えて下さい。 他にも簡単な方法があればお願いします。     <シート1>               <シート2>   A     B   C  D    A    B  C  D 1 名前 郵便番号 住所 金額   1 名前     2    以下、データ          2 郵便番号 3                    3 住所    ・                   ・ 10                   10           金額                          <シート1>にはA1~D1までデータがあります。(50行) <シート2>の1ページ目に<シート1>の1行目のデータを入れたいです。 <シート1>は全部で50行のデータがあり、 <シート2>は1~10行までを1ページとし、50ページ作りたいです。 いろいろ調べてみたのですが、わからなかったので 説明不足かもしれませんが、よろしくお願いします。

  • 複数条件抽出をVBAで

    excelの複数条件抽出をVBAでやりたいので教えてください。 エクセル2003で複数条件抽出をしたいと思っています。 dateのシートに、A列:日付、B列:名前、C列:金額があります。 それを1というシートに、日付と名前の2つの条件が合致している金額を抜き出したいと思っています。 抜き出すのは0601&AさんをA5セル~A20       0601&BさんのはB5~B20へ ということは可能でしょうか? もしよろしければ教えていただければ助かります。 'date'シート 日付   名前  金額 0601 Aさん  100円 0601  Aさん  120円 0601  Bさん  150円 シート'1' 0601&Aさん   0601&Bさん 100円           150円 120円 どの人がやってもボタン1つで実行できるようにしたいために、 VBA出できればと思っております。

  • Excel2002のマクロについて教えてください

    フィルターオプションの自動化を試みたのですが・・・・ sheet「商品一覧」、sheet「抽出結果」 上記2つのSheetがあったとします。 抽出したい表は「商品一覧」、抽出結果を出したい表は「抽出結果」です。(マクロを実行するコマンドボタンは「商品一覧」に作成します) フィルターオプションは、結果を出したいシートから、操作を行えば、別シートにも、結果を出すことができるので、マクロの自動登録を使って、以下のようなマクロが作成できました。 ---------------------------------- Sheets("抽出結果").Select Sheets("商品一覧").Range("B5:G24").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ------------------------------------ もちろん、きちんと動作はするのですが、「商品一覧」の範囲が(B5:G24)が変動する場合があるので、以下のように変更をしました。 ------------------------------------ Dim Gyou As Integer Gyou = Worksheets("商品一覧").UsedRange.Rows.Count + Worksheets("商品一覧").UsedRange.Row - 1 Sheets("抽出結果").Select Sheets("商品一覧").Range(Cells(5, 2), Cells(Gyou, 7)).AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Range("B3:B4"), CopyToRange:=Range("B7:G7"), Unique:=False ----------------------------- しかし、上記の方法では、エラーが出てしまいます。 最初は、CurrentRegion を使用しようと思ったのですが、うまくいきませんでした。 マクロを勉強したばかりで、たぶんとんでもないものを作っているのだと思いますが、ご指摘いただければうれしいです。 よろしくお願いします。

  • EXCEL・・検索ボタンをクリックするとマクロが実行されるようにしたい

    EXCELでSheet1にデータを入力、Sheet2に検索結果抽出フォームを作成してあります。セルにキーワードを入力しマクロの実行でデータの抽出ができるように出来上がっています。 そこで、セルに入力→ツールバーからマクロの実行という作業を検索ボタンを作成し一発で検索ができるようにしたいのです。 キーワードの入力セルはC:3です。 よろしくお願いします。

専門家に質問してみよう