こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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)データがなくなったら終了(保存せず閉じない)



以上です。
よろしくお願いします。

投稿日時 - 2011-04-26 01:25:10

QNo.6694419

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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




>コピーして動作する状態でいただけますでしょうか?

それならそうと,サンプルとか言わないで丸投げしますから作ってくださいお願いしますと書けば良いんですよ。乗りかかった船なのでどうぞウマウマ持ってってくれて構いませんが,最初からそう書いておけばもっと親切な人がさっさと答えをオシエテくれましたよ。
と言っても既にお話ししておいた内容で(ほぼ)全部ですが,どうせ寄せられたアドバイスを理解しよう自分でやってみようとする気もまるで無さそうなんですから。

投稿日時 - 2011-04-27 01:23:39

ANo.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
などのように記入してください

投稿日時 - 2011-04-26 11:58:27

補足

サンプルが欲しいのは「マクロでしたいこと」の部分です。
前提条件というのは現在こういう状態(フォルダやファイル・フォルダ構成などを仮定した場合)で、マクロの動作で(1)-(5)をして欲しいということです。

できれば、サンプルコードはコピーして動作する状態でいただけますでしょうか?

まだまだ理解が足りず、断片的なものを組み合わせるとどうもデバッグに時間がかかりすぎてしまいます。

お手数ですが、ご教授お願い致します。

投稿日時 - 2011-04-26 23:53:42

ANo.1

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

投稿日時 - 2011-04-26 10:33:05

補足

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

投稿日時 - 2011-04-26 23:47:23

あなたにオススメの質問