初めまして。VBA初心者です。 まずはこちらを見て下さい。 Sheet1 Sheet2 A B C D A B C D 1 大区分 中区分 名称 20 大区分 中区分 名称 2 A a あ 1 21 A a あ 1 3 い 2 22 い 2 4 う 3 23 う 3 5 え 4 24 お 5 6 お 5 25 b あ 1→6 7 b あ 6 26 い 2→7 8 い 7 27 う 3→8 9 う 8 28 お 5→10 10 え 9 29 B a か 11 11 お 10 30 き 12 12 B a か 11 31 け 14 13 き 12 32 こ 15 14 く 13 33 b か 11→16 15 け 14 34 き 12→17 16 こ 15 35 け 14→19 17 b か 16 36 こ 15→20 18 き 17 19 く 18 20 け 19 21 こ 20 元々関数を使用していたのですが、数があまりに多くなってきたため、VBAで処理できればと初めて作ってみましたが、途中で行き詰った為ご教授お願いします。 Sheet1,2にそれぞれ表があり、Sheet1が元となります。(行は1000行以上になることもあります。) それで、Sheet2の名称をSheet1の名称と比べ同じ場合、Sheet1のD列をSheet2のD列にリンクさせたいのです。 一応、色々見ながら下記のように組んでみたのですが、矢印の左側のようになってしまいます。 これを、右側のような結果にしたいのですが、なんとなく間違ってる箇所は分かるものの、どのようにしていいか分かりません。 これをどのようにしたらよろしいでしょうか?若しくは、他にやり方があれば教えて頂きたいです。 分かりづらい説明で申し訳ないですが、よろしくお願い致します。 sub test() Dim i As Integer,maxrow As Integer maxrow = Sheet2.Range("C" : Rows.Count).End(xlup).Row For i = 1 To maxrow - 19 If Sheet1.Cells (1+i,3)=Sheet2.Cells(19+i,3) Then Sheet2.Cells(19+i,4)="=Sheet1" & Sheet1.Cells(1 + i,3).Offset(0,1).Address Else Sheet2.Cells(19+i,4)="=Sheet1" & Sheet1.Cells.Find(Sheet2.Cells(19+i,3)) _ .Offset(0,1).Address End if Next i End sub
↧