Aのファイル(ThisWorkbook)のデータと複数のファイルのデータを全て照合するコードを書きたいと思っています。
配列Sheet(1~179)に複数のファイルのパスが入っています。
AファイルにはG列にデータが入っています
######Aファイル
行番号|F |G |H|
|:--|:--:|--:|
1||初期||
2||テスト||
3||アクション||
4||イベント||
5||デバッグ||
配列に入っている複数のファイルのデータはCC列に入っているが、データ数がバラバラ
Bファイル CC1CC6CC8 など
Cファイル CC1
######Bファイル
行番号|CB |CC | CD |
|:--|:--:|--:|
1||イベント||
2||検索||
3||デバッグ|
4||PHP||
5||AWS|
6||初期||
######Cファイル
行番号|CB |CC | CD |
|:--|:--:|--:|
1||C#||
2||テスト||
3||Ruby|
4||Java||
5||C||
6||エラー||
7||Python||
8||module||
実装したいことは、以下の2つです
もしAファイルのG列のデータが「初期」で、配列に入っているどれかのファイルのデータに初期という文字が1つでもあれば、真横のH列に「一致」という文字を入力。無ければ不一致を入力。
(例)AファイルのG1が初期であり、Sheet(1)に入っているBファイルのCC6に初期という文字があれば、AファイルのH2に一致を入力。全ファイルと比較し、無ければ不一致を入力
######Aファイル
行番号|F |G |H|
|:--|:--:|--:|
1||初期|一致|
2||テスト||
3||アクション||
4||イベント||
5||デバッグ||
AファイルのG列のデータが「初期」以外である場合は、配列に入っているどれかのファイルのデータに、Aファイルと同じデータが1つでもあれば、「一致」という文字を入力。無ければ不一致を入力。
(例)AファイルのG2がテストであり、Sheet(2)に入っているCファイルのCC2にテストという文字があれば、AファイルのH3に一致を入力。全ファイルと比較し、無ければ不一致を入力
######Aファイル
行番号|F|G|H|
|:--|:--:|--:|
1||初期|一致|
2||テスト|一致|
3||アクション|不一致|
4||イベント|不一致|
5||デバッグ|一致|
考え途中の構想が、
a=2 b=2 d=1(配列Sheetの要素番号に使用 要素179まである) book = Sheet(d) 配列の中には、ファイルのパスが179まで入っている For i = 1 to ? For j = 1 to ? if ThisWorkbook.WorkSheets("イベント").Cells(a,7).value Like "*初期*" Then 比較するファイルを開く記述 if ThisWorkbook.Worksheets("イベント").Cells(c,7).Value = Workbooks(book).Worksheets("説明").Cells(b,81) Then ThisWorkbook.Worksheets("イベント")Cells(c,8).Value = "一致" c = c + 1 Aファイルの行番号であるcの値を更新して、次のデータの処理を行いたい Else b = b+ 1 比較ファイルの行番号であるbの値を更新し、2つめのifに戻り再びAファイルの値と比較したい End if End if Next j Next i
この時点で色々疑問点が出てきてしまい、手が止まってしまいます。
やりたいことは、
-
一致するデータがあれば、その時点で処理を終了し、Aファイルの行番号であるcの値を更新し、Aファイルの次のデータの処理に移りたい
-
無ければ、比較ファイルの行番号であるdの値を更新する。1つの比較ファイルの全データと比較した場合は、次の比較ファイルと比べる (例)Bファイル(Sheet(1)に格納)は最後のデータが入っているCC14まで比較したが、一致は無かったので、次はCファイル(Sheet(2)に格納)のCC2から比較を始める。Cファイルは、CC11までデータがある。CファイルをCC11まで比較ても一致はなかったので、次はDファイルのCC2から比較を始める
3.全てのファイルと比較してもなかった場合はH列に不一致と入力し、Aファイルの行番号であるcの値を更新し、次のデータの処理に移りたい
4 それぞれ、比較ファイルのデータ数が違うのでForの上限を何にすれば良いのか?
5 配列Sheetはどこで要素番号を更新すれば良いのか
6 Aファイルのデータが「初期」では無い場合の処理も記述したい
if文をかなりネストするのではないかと、思っています。
どのような構想にすればいいのかだけでも良いので、ご教授願います。
回答2件
あなたの回答
tips
プレビュー