- ベストアンサー
エクセルでマクロを使用して表の指定位置に値を表示させる方法
- エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させる方法について説明します。
- シート2の表には番号、商品名、仕入先、メーカー、区分が入っており、約5,000行のデータがあります。
- シート1にはレイアウトした表があり、マクロを利用してシート1のセルにシート2の値を表示させることができます。ボタンを押すとセルの値が繰り上がり、対応する行の値が表示されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 参考になるかどうか判りませんが・・・ ごく単純にやってみました。 ↓の画像でSheet1にコマンドボタンを一つ貼り付けます。 デザインモードで貼り付けたコマンドボタン上でダブルクリックし ↓のコードを貼り付けてみてください。 Private Sub CommandButton1_Click() Cells(4, 2) = Cells(4, 2) + 1 If Cells(4, 2) = Worksheets("sheet2").Cells(Rows.Count, 1).End(xlUp).Row Then Cells(4, 2) = 1 End If End Sub そして、Sheet1のB5セルに =IF(B4="","",VLOOKUP($B$4,Sheet2!A:E,ROW(A2),0)) という数式を入れ、オートフィルB8セルまで下へコピーすると 画像のような感じになります。 これで何とか希望に近い形にならないでしょうか? 以上、参考になれば良いのですが 他に良い方法があれば読み流してくださいね。m(__)m
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
質問は丁寧で長いがが、ボタンをクリックするごとに、シート2の1行ずつ下のデータを順に、シート1 の項目を指定行に表示したいということか。 質問表現を工夫してほしい。文章で要点を併用して表現することも望ましい。 ーー もしそうなら、クリックから次のクリックを関連付けることが難しく、PUBLIC変数でも使わないとダメと思うので、やや難しく好ましくない要求だが、こういう課題なのか??。 普通はシート1に表示したい連番でも入力して、クリックし、シート2からその連番を元にデータ行をさがし、シート1に表示するのが素直。 質問のままだと 例データ Sheet2 氏名 住所 従業員数 山田 東京都 23 小島 神奈川県 6 野島 千葉県 35 標準モジュールに Public n Sub test01() n = 1 End Sub Sheet1にボタンを貼り付け、そのシートモジュールに チェックとか一切してなくて、モデル的な説明を断っておく。 Private Sub CommandButton1_Click() n = n + 1 Dim sh1, sh2 Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") sh1.Range("B3") = sh2.Cells(n, "A") sh1.Range("B5") = sh2.Cells(n, "B") sh1.Range("B7") = sh2.Cells(n, "C") End Sub この初期化はTest01の実行しかなく、操作性が良くない。もうひとつの初期化用のボタンを貼り付ければ簡単だが。
お礼
素晴らしいです。 思っていた物が完璧に出来あがりました。 社内でも「そんなの出来ない」と皆に反対されていましたが 完成品を見せたら、みなびっくりしてました。 特に数字の繰上げ。みんなにも 「ここ(番号)は手入力で1,2,3,4と繰り上げていくしか無いだろう。 それなら後はVLOOKUPで簡単だけど」 と言われてました。 感謝感謝です。 この後、このシート1のセルC4に エクセルにアドインしたソフトでB列の値からバーコードを生成するように 関数式を入力しましたがそれもうまく出来ました。 クリックするごとにバーコードのオブジェクトもB列の値の変化に伴いキチンと変化します。 本当にありがとうございました。