• 締切済み

excel2003 VBAマクロの作成

すいません、下記のような条件を満たすマクロのサンプルコードをお願いします。 ■前提条件 ・「検索元データ」はマクロ.xlsの中にある ・「検索先ファイル」は管理ファイル.xlsである ・マクロ.xlsファイルのA列にはデータがn個ある(セル範囲A2:A(n+1)まで) ・C:\one\two\three\管理ファイル.xls のフォルダ位置である(絶対パスで指定する) ・管理ファイルの中にはSheet1,Sheet2,Sheet3・・・・Sheet10の10コのシートがある ■マクロでしたいこと (1)A列のデータが管理ファイル(ブック内)に記載されているかチェックする (2)A列のデータをチェックしたら、下記の通りに列にチェック情報を記載する B列 データがいくつあったか(管理ファイルに記載されていない場合は0と表示) C列 データが記載されているシート名(B列が0の場合は0と表示) (3)次のデータへ (4) (1)-(3)をA列のデータがなくなるまで繰り返す (5)データがなくなったら終了(保存せず閉じない) 以上です。 よろしくお願いします。

みんなの回答

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

sub macro1()  dim myRng,mySht,n  workbooks.open filename:="C:\one\two\three\管理ファイル.xls"  n = worksheets("マクロ.xls").worksheets("シート名").range("A65536").end(xlup).row  for each myRng in worksheets("マクロ.xls").worksheets("シート名").range("A2:A" & n)  for each mySht in workbooks("管理.xls").worksheets   if application.countif(mySht.usedrange, myRng) > 0 then    myRng.offset(0, 1) = myRng.offset(0, 1) + application.countif(mySht.usedrange, myRng)    myRng.end(xltoright).offset(0, 1) = mySht.name   end if  next  next end sub >コピーして動作する状態でいただけますでしょうか? それならそうと,サンプルとか言わないで丸投げしますから作ってくださいお願いしますと書けば良いんですよ。乗りかかった船なのでどうぞウマウマ持ってってくれて構いませんが,最初からそう書いておけばもっと親切な人がさっさと答えをオシエテくれましたよ。 と言っても既にお話ししておいた内容で(ほぼ)全部ですが,どうせ寄せられたアドバイスを理解しよう自分でやってみようとする気もまるで無さそうなんですから。

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

サンプルが欲しいのはどこなんでしょう。 ・マクロ.xlsファイルのA列にはデータがn個ある(セル範囲A2:A(n+1)まで) for each myRng in worksheets("マクロ.xls").worksheets("シート名").range("A1:A" & n) ’作業を記入 next のような格好で巡回して調べるのが定石です ・C:\one\two\three\管理ファイル.xls のフォルダ位置である(絶対パスで指定する) workbooks.open filename:="C:\one\two\three\管理ファイル.xls" のようにしてブックを開いて調べます ・管理ファイルの中にはSheet1,Sheet2,Sheet3・・・・Sheet10の10コのシートがある for each mySht in workbooks("管理.xls").worksheets ’作業を記入 next のような格好で巡回して調べるのが定石です (1)A列のデータが管理ファイル(ブック内)に記載されているかチェックする if application.countif(mySht, myRng) > 0 then 対象のシートに記載があります end if (2)A列のデータをチェックしたら、下記の通りに列にチェック情報を記載する 対象のシートに記載があったら myRng.offset(0, 1) = myRng.offset(0, 1) + application.countif(mySht, myRng) myRng.end(xltoright).offset(0, 1) = mySht.name などのように記入してください

testdb1
質問者

補足

サンプルが欲しいのは「マクロでしたいこと」の部分です。 前提条件というのは現在こういう状態(フォルダやファイル・フォルダ構成などを仮定した場合)で、マクロの動作で(1)-(5)をして欲しいということです。 できれば、サンプルコードはコピーして動作する状態でいただけますでしょうか? まだまだ理解が足りず、断片的なものを組み合わせるとどうもデバッグに時間がかかりすぎてしまいます。 お手数ですが、ご教授お願い致します。

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

検索範囲は、シート全体?特定の列? データが複数のシートにあることはないの? データが複数のシートにある場合、C列にはどのように表記するの?

testdb1
質問者

補足

データが複数のシートにあることはありません 1つのシートに同じデータが複数あることはあっても そのデータが異なるシートにはないというのが現状の条件でお願いします!

関連するQ&A

  • マクロ(Excel)で検索して値の返し方について

    マクロの初心者です。関数でいうvlookupなどを使って、 検索した値を反映させるマクロをお教え下さい。 ファイル名「担当ID.xls」のB列へ「顧客名簿.xls」から 検索したC列(地域)を返したいです。 お手数おかけしますが、全くの初心なので、マクロの 説明コメントも記載して頂けると助かります。 ■ファイル名:担当ID.xls 列A         B      C 顧客番号 地域  担当ID A-1111       ?  os123 A-2222       ?  nr456 A-3333       ?  wk789 ■ファイル名:顧客名簿.xls ■シート名:Sheet1 列A      B     C 顧客番号  名前   地域 A-1111   A   大阪 A-2222   B   奈良 A-3333   C   和歌山 以上です。よろしくお願いいたします。

  • エクセルのマクロ

    以下の処理をするマクロを教えて頂きたいのですが。 ファイルab.xlsのSheet1のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列にコピーする。 ただし、Sheet3のC列には既にデータが入力されているので(空欄も有)、一番末端に付け足す形にする。 続けて、ファイルab.xlsのSheet2のA1からA100までのデータを、ファイルcd.xlsのSheet3のC列に、前と同様のやり方でコピーする。 宜しくお願いいたします。

  • excel2000マクロ抽出方法

    2つのファイルがあります。ブック名A.XLS シート名 WORK              ブック名b.XLS シート名 SORT              ブック名A.XLS シート名 WORKに下記のデータが入っています。 AD 1300G A227550 000PA505(C列2行目) 200112(F列)200201(G列)200202(H列)200203(I列)200204(J列)200205(K列)→1行目固定データ AD 1300G A227550 000PA533(C列3行目)   ブック名b.XLS シート名 SORTに下記のデータが入っています。 AD 1300G A227550 000PA505(A列2行目)200112(E列)200201(F列)200202(G列)200203(H列)200204(I列)200205(J列) →1行目E列~J列のデータは都度変わっている AD 1300G A227550 000PA533(A列3行目)    データ抽出条件  ブック名A.XLS シート名 WORKの F列~K列の1行目の列データとブック名b.XLS シート名 SORTの  E列~J列の1行目の列データが同じで、ブック名A.XLS シート名 WORKのC列の2行目以降のコードと  ブック名b.XLS シート名 SORTのA列の2行目以降のコードが同じだったら  ブック名b.XLS シート名 WORKの E列~J列の同じ行にデータを入れる。違うときは、  ブック名b.XLS シート名 WORKのデータはそのままにする。 上記の条件を満たしたマクロの記述の仕方を教えてください。 以上よろしくお願いします。

  • excel2003 VBAマクロの作成

    すいません、下記についてコピーして動作する状態でいただけますでしょうか? 本当はもっと複雑なのですが、下記の部分だけなかなかうまくいかず、お力を貸してください。 管理台帳.xlsには↓のように記載があります。 A列 B列 C列 D列 ------------------------------------------ 管理番号 値段 商品名 数 1行目 K0001 500 X 5 2行目 K0002 200 S 1 K0002 300 T 1 K0003 100 Z 15 K0003 500 X 15 K0003 700 M 15 K0003 600 N 15 ・ ・        n行目 ------------------------------------------ ■条件/動作要件 ・管理番号は商品名別に1行とする為、同じ管理番号は複数行に記載がある ・管理番号1つに対して、商品名は複数ある マクロの処理内容としては、以下の2つが欲しい (1)重複計上を避ける為、行の情報がまったく同じものはセル範囲A?:D?の"値"を削除する ※セルや行ごと削除すると、Excel関数を使用しているセルに不具合がでる (2)2~n行目の範囲をソートする 優先度1:管理番号 優先度2:商品名 ※(2)は作成済みなので回答不要です

  • エクセルマクロでマクロをアクティブにしたくない

    エクセルのマクロをひとつの「マクロA」という名前で、データーファイルからセルに入っている内容などを呼び出しながらまくろAのシートにデーターを貼り付けながら作業をしています。 Workbooks.Open Filename:= _ "C:\Documents and Settings\owner\My Documents\マクロ.xls" Application.Run "マクロ.xls!マクロ" と記載すると、マクロXLSがアクティブになってしまいます。 その為記載に'ActiveWindow.WindowState = xlMinimized と入れたりするのですが、アクティブになるシートがマクロ以外にうまくいかないことがあるのです。 データーシートは、毎回データーが変わる関係で、DATA.xlsがAのときやBのときが発生します。

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

  • エクセル2000マクロ検索方法

    Aのファイル a.xls シート名 aaa Bのファイル b.xls シート名 bbb Aのファイルに下記のデータベースがあります。   A列 B列   0001 100   0002 200   0004 300 Bのファイルに下記のデータベースがあります。   A列 B列   0001 300   0002 200    抽出条件方法 AのファイルとBのファイルのA列を参照して違うものだけを、Aのファイルから 別のファイルに取り出す方法をマクロでの記述方法を教えてください。 別のファイルに取り出すデータは、下記の通リです。   A列 B列   0004 300 以上よろしくお願いします。

  • エクセルマクロの質問です。

    例えば、A.xlsというファイルに01.csv,02.csv,・・・,20.csvといういくつかのファイルからデータを取り出すのですが、A.xlsのシート1の1列目に01.csvの1列目を貼り付けて、01.csvの2列目はA.xlsのシート2の1列目に貼り付けるようにシートをずらして行って、02.csvの1列目はA.xlsのシート1の2列目、02.csvの2列目はA.xlsのシート2の2列目というようにしたいのですが、どのようなプログラムがよいのでしょうか? エクセルマクロ初心者なので説明が不十分かも知れませんがよろしくお願いします。

  • 【Excel2003】マクロの実行

    お世話になります。 フォルダー内全てのエクセルファイルに、あるマクロを実行したいのですが可能でしょうか? 例としましては フォルダー「変更ファイル」 以下中にあるファイル ------------------------ ファイル「A.xls」 ファイル「B.xls」 ファイル「C.xls」 ファイル「マクロ.xls」←ソートを行うマクロ入り ------------------------ 「変更ファイル」フォルダー内の「マクロ.xls」を実行してA,B,Cファイル(フォルダー内全てのファイル)内データーを各ファイル毎ソートしたい。 この作業はマクロ.xlsのマクロをカスタマイズしてすることは可能でしょうか? 可能ならやり方を教えてください。 お願いいたします。

  • Excel2000マクロ_大量のシート名を楽に変更するマクロ

    何方か、回答を宜しくお願いします。 deta.xls(多数のシートが有る)シート名変換.xls(マクロが書いてある) 上記の2つのファイルが有りますが、やりたいことはdeta.xlsがアクティブの 時にショートカットでマクロAを起動して、シート名変換.xlsの「シート名」と いうシートのA1から下方向にdeta.xlsのシート名を所得する。 そして、マクロ終了後所得したシート名を変えて。 deta.xlsがアクティブの時にマクロBを起動して、「シート名」のA1から下方向に deta.xlsのシート名を変更する。 宜しくお願いします。 下記参考 Sub マクロA() Dim i As Worksheet ThisWorkbook.Worksheets("「シート名」").Columns("A:A").ClearContents '書き込む前にA列のデータをクリア Dim WS As Worksheet For Each WS In Worksheets