- ベストアンサー
エクセルのマクロで
下記のような表において(行数は500ほど) 別シートに 担当者名「 」検索 、 処理年月「 」検索 というアイコンを作成し、 たとえば 処理年月「2007/06」検索 と入力し、アイコンをクリックすると 2007/06のデータ抽出されてが別シート(またはアイコンの下)に作成されるといったしくみをつくりたいと思っています。 A列 番号 (例;A-001,B-002) B列 タイトル C列 担当 D列 処理年月 マクロについては初心者に近いので、上記のようなしくみをやさしく紹介しているサイトがありましたら、お教えください。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
上記は、マクロでなくとも、Excelの関数を利用することで実現は可能です。 (むしろそっちのほうが簡単かもしれません^-^;) 一応、マクロとのことですので、参考になるVBA(マクロの元となるプログラミング言語)サイトをはっつけておきます! VBAを使える方なら簡単だと思いますが、VBAって?・・・からだと、少し時間がかかると思います。 「ユーザーフォーム」と、「シート(の作成とか検索とか)」「行選択」「コピー、貼り付け」 このへんのキーワードに"VBA"をくっつけると結構出てくると思います!
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
私が考え付く方法は (1)全行総なめ比較法 (2)オートフィルタ (3)Findメソッドを使う (4)SQL(クエリ)を使う などです。(4)は>初心者に近いので、では対処外とおもう。 (2)でマクロの記録をとり、必要な修正を加えるのは、どうでしょう。 そのときフィルタオプションの方がふさわしいかと。 ーーー 例データ A1:D8 番号 タイトル 担当者 処理年月 A-001 朝よ 鈴木 2007/3/1 B-001 昼よ 田中 2007/4/1 C-001 夜よ 大川 2007/5/1 C-002 海よ 小川 2007/3/1 C-003 川よ 鈴木 2007/3/1 B-002 橋の上で 鈴木 2007/4/1 B-003 私の趣味 田中 2007/5/1 クライテリア(抜き出し条件)として H1:I2 担当者 処理年月 鈴木 2007/3/1 ーーー 操作は データーフィルターフィルタオプションー 指定した範囲をオン リスト範囲 A1:D8 検索条件範囲 $a41:I2 抽出範囲 $K$1:$N$15 --- マクロの記録結果 Sub Macro1() Range("A1:D8").Select Range("A1:D8").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "H1:I2"), CopyToRange:=Range("K1:N15"), Unique:=False End Sub ーー 実行すると K1:N3に 番号 タイトル 担当者 処理年月 A-001 朝よ 鈴木 2007/3/1 C-003 川よ 鈴木 2007/3/1 が出る。 -- 年月の入力状況が判らず、エクセル日付の1日にして、手抜きしている。 ーー 担当者だけ問題にするときは、処理年月のI2セルの内容は空白にしておく。 (鈴木を抜きだしのとき) ーー コマンドボタンを1つシートに張り付け そのクリックイベントの処理に、上記マクロ(名)を指定する。 でも上記の内容が判るかな。
- merlionXX
- ベストアンサー率48% (1930/4007)
別にマクロを使うまでもなく、メニューの「データ」、「フィルタ」、「オートフィルタ」で、担当者名と処理年月で該当するものだけ表示させ、コピーして別シートに貼り付ければいいのでは?