• 締切済み

エクセルマクロ 検索して値を取得

マクロはよく分かっていません。 既存のVBAを見ながらマネしてる状態なので、どこが間違っているのか教えて下さい。 sheet1 A 所属 1 789         2     3 sheet2    A     B 所属コード  所属 1 12345    あいう123 2 12346    あいう456   3 12347    あいう789 やりたいこと シート1の所属が「789」だったらとシート2の所属から「あいう789」を検索し、シート2の所属コード「12347」をシート1の所属に返す。 私が作ったやつだと「12347」は1行目でなく、3行目に返ってしまいます。 Dim SyozokuRange as Range Dim Syozoku as String Dim Buf as String Buf = "あいう" Syozoku = Buf & Syozoku Set SyozokuRange = worksheets(2).range("a:b").currentregion For i = 1 to SyozokuRange.rows.count If Syozoku = SyozokuRange.cells(i,2) Then worksheets(1).cells(i,1).value = SyozokuRange.cells(i,1) end if next i

みんなの回答

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

このコードだと、Syozoku に 789 という値が代入されないのですが、コードを書き忘れていますよね? >私が作ったやつだと「12347」は1行目でなく、3行目に返ってしまいます。 当たり前ですねぇ。 >worksheets(1).cells(i,1).value = SyozokuRange.cells(i,1) iは シート2で 789 が見つかった行なのに、左辺は その i を使って、Cells(i,1) としているからですね。 VBEにて、[F8]キーでステップ実行して、プログラムの流れや、変数の値を確認することを覚えましょう。

kto
質問者

補足

すぐに回答頂いたのに、お返事が遅くなってしまいましてすみません。 F8の使い方を知るのに時間が掛かってしまいました。。 >iは シート2で 789 が見つかった行なのに、左辺は その i を使って、Cells(i,1) としているからですね。 やっぱりそうなんですね。。。 左辺はSyozokuにしても答えが得られなかったので、ここは何になるのだろうと思って質問しました。 Syozoku = SyozokuRange.cells(i,1)で F8で黄色くしてマウスを合わせると、私の欲しい答えが表示されるのですが・・・ 何のコードを書き忘れているのか教えて下さい。 宜しくお願いします。

関連するQ&A

専門家に質問してみよう