エクセルでマクロを使用して表の指定位置に値を表示させる方法

このQ&Aのポイント
  • エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させる方法について説明します。
  • シート2の表には番号、商品名、仕入先、メーカー、区分が入っており、約5,000行のデータがあります。
  • シート1にはレイアウトした表があり、マクロを利用してシート1のセルにシート2の値を表示させることができます。ボタンを押すとセルの値が繰り上がり、対応する行の値が表示されます。
回答を見る
  • ベストアンサー

エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位

エクセルでマクロを使用してシート2の表から行単位でシート1の表の指定位置に値を表示させたい シート2の A列に番号(連番) B列に商品名(数字とアルファベットの組み合わせ) C列に仕入先(数字4桁) D列にメーカー(数字4桁) E列に区分(数字とアルファベットの組み合わせで3ケタ) が入っていて約5,000行のデータが有ります。 シート1にレイアウトした表があって シート1のB4にシート2のA2の値(番号連番) シート1のB5にシート2のB2の値(商品名) シート1のB6にシート2のC2の値(仕入先) シート1のB7にシート2のD2の値(メーカー) シート1のB8にシート2のE2の値(区分) が表示されるようにしてあります。 マクロを利用して、作成したシート1のボタンを押すと シート1のセルB4の番号欄が1から2(シート2のA3の値)に繰り上がり、 シート1の表のA列の番号と同じ行のそれぞれの値を 上記の規則で表示させるようにできますか? シート1のB4が2になるとシート1の3行目をさしますので シート1の表には、 シート1のB4にシート2のA3の値(連番) シート1のB5にシート2のB3の値(商品名) シート1のB6にシート2のC3の値(仕入先) シート1のB7にシート2のD3の値(メーカー) シート1のB8にシート2のE3の値(区分) が表示されます。 シート1のボタンをクリックするごとにB4のセルは3,4,5,6と繰り上がり シート2のA列の番号と一致した行のそれぞれの値を表示させていく。

  • gx9wx
  • お礼率95% (440/460)

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 参考になるかどうか判りませんが・・・ ごく単純にやってみました。 ↓の画像で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

gx9wx
質問者

お礼

素晴らしいです。 思っていた物が完璧に出来あがりました。 社内でも「そんなの出来ない」と皆に反対されていましたが 完成品を見せたら、みなびっくりしてました。 特に数字の繰上げ。みんなにも 「ここ(番号)は手入力で1,2,3,4と繰り上げていくしか無いだろう。 それなら後はVLOOKUPで簡単だけど」 と言われてました。 感謝感謝です。 この後、このシート1のセルC4に エクセルにアドインしたソフトでB列の値からバーコードを生成するように 関数式を入力しましたがそれもうまく出来ました。 クリックするごとにバーコードのオブジェクトもB列の値の変化に伴いキチンと変化します。 本当にありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問は丁寧で長いがが、ボタンをクリックするごとに、シート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の実行しかなく、操作性が良くない。もうひとつの初期化用のボタンを貼り付ければ簡単だが。

関連するQ&A

  • エクセルマクロを使って、表を完成させたいのですが

    お尋ねします。 ブックAのシート1には、下記のように数字が入っています。 それをもとに、ブックBのシート1に表を完成させたいのですが、どのようにすればいいでしょうか。 ブックBは、ブックAのA列の値がそれぞれいくつあるかを示したものです。 ブックA    A列 1行 2A  2行 1A 3行 1C 4行 4D 5行 5D 6行 1A ※行数はこれ以上ありますが、A列には、数字とアルファベットの  組み合わせで2桁で構成されています。 ※アルファベットはA~Dで、数字は1~5です。 ブックB    A列 B列 C列 D列 F列 1行  2      1  2行  1 3行  4行            1 5行               1 ※ブックAのA列の値からブックBにブックAの値が  それぞれ何個あるかを示したいのです。  よろしくお願いします。

  • エクセルのデータの表を1行ごとに用意したレイアウトで1ページづつ印刷し

    エクセルのデータの表を1行ごとに用意したレイアウトで1ページづつ印刷したい。 シート1の A列に商品名(数字とアルファベットの組み合わせ) B列に数字4桁 C列に数字4桁 D列に数字とアルファベットの組み合わせで3ケタ が入っていて5,000行のデータが有ります。 シート2のB1にシート1のA1の値 シート2のB2にシート1のB1の値 シート2のB3にシート1のC1の値 シート2のB4にシート1のD1の値 シート2のC1にシート2のB1~B4の値から作成されるバーコードを表示 (エクセルにアドオンしたアプリケーションで生成されます) シート2のB5にシート1のA2の値 シート2のB6にシート1のB2の値 シート2のB7にシート1のC2の値 シート2のB8にシート1のD2の値 シート2のC5にシート2のB5~B8の値から作成されるバーコードを表示 改ページをシート2のA4で1ページになるようにして (よって2ページ目の終わりはA8) シート1の5,000行分をシート2に同じように 貼り付ける一番簡単な方法は有りますか?

  • 別シートの行を選択し対象列を転記するマクロ

    シート2のA~F列までデータがあります。 行数は10,000行です。(月ごとに100行くらい追加されます。) A列は項目がNO.で半角数字が連番で入力されてます。 セルA2→1 セルA3→2 セルA4→3 . . . セルA10000→9999 セルA10001→10000 という感じです。 シート1の セルI9に番号を入力すると シート2のその番号の行のB~F列の値を シート1のJ9~N9列に転記したいです。 例えば シート1のセルI9に100と入力したら、 シート2のA列が100と入力されているセルはA101ですから 101行目となります。101行目の各列の値を転記します。 ↓ シート1のセルJ9にシート2のセルB101の値を転記 シート1のセルK9にシート2のセルC101の値を転記 シート1のセルL9にシート2のセルD101の値を転記 シート1のセルM9にシート2のセルE101の値を転記 シート1のセルN9にシート2のセルF101の値を転記 シート1もシート2もセルの書式設定は標準。 B,E,F列は半角英数字の組み合わせで C,D列は半角数字のみです。 たまにF列に空白がある行があります。 B,F列は数字のみの場合もあります。 B,C,D,F列は数字のみの場合 「数値が文字列として入力されています」 となっています。 マクロで行いたいのですが記述そのものを教えてください。

  • 作成の表の値を別シートに移したい

    Sheet1に画像の表にあるように、Sheet1のC列のA+Bの結合番号の数字(例えば11とか118とか15007など)をSheet2のあるセルに入力すると、Sheet2へSheet1のD・E・Fのセルにある数字が移るようにするには、関数はどのようにしたらよいでしょうか。Sheet1のC列セルの「BC結合番号」はランダムの数字で最高7桁、最低1桁ですし、同一番号が「BC結合番号」(空欄セルがあるので)とびとびの行に1桁と2桁の数字が出てきます。また、A列セルの番号は50行程度こどに2・3・4・・・・30ぐらいまでと増えていきます。当然、D・E・Fのセル値はSheet2へ移行した時は、単独で評値が入るようにしたいのです。また、リンク貼り付け以外の方法でやりたいのです。(初心者でマクロは使えません。)

  • エクセル 行挿入のマクロについて

    こんばんは、エクセルのマクロについてお伺いします。 現在 A1:支店名 B1:連番 C1:在庫数 全部で1000行位入力があります。 ・A列には支店名 ・B列には連番は1・2・3~と1000件位 ・c列には在個数にはそれぞれ1桁から2桁の数字 【質問】 在庫数の数だけその連番の行を増やしたい。 例えば、 A2:東京支店 B2連番:1 C2在庫数:3 だとすると2行目のあとに2行挿入し在庫数が3なので下記のように3行にしたい。 A2 東京支店 B2連番 1 C2 在庫数 1 A3 東京支店 B3連番 1 C3 在庫数 空欄 A4 東京支店 B4連番 1 C4 在庫数 空欄 何せ数が多いのでマクロをお教え頂ければ助かります。 ※その際、支店名と連番は同じ物がはいるとありがたいです。 ※在庫数は空欄で構いません。 マクロでなくても方法があればお教え下さい。 よろしくお願い致します。

  • シート間の行相違検証マクロ

    シート1のB列(B5:B38)に数10名の氏名を入力します。C列からM列までには数字を何個か入力します。例えば  A氏、C5には4、F5には2、M5には3、 B氏、E6には3、G6には4、 C氏、F7には4、H7には8、等です。 シート2の(A3:A36)にはシート1の氏名を入力します。B列からL列までにはシート1で入力した数字に対応した数字を入力します。例えば シート1、A氏、C5の4ではシート2、A氏の行のB列に2000、F5の2ではシート2のA氏の行のE列に1000、M5の3ではシート2のA氏の行のL列に1500、と入力します。ここで、シート2で入力した行が違っていないか。他の人の行に入力していないかの検証マクロの記述方を教えてください。尚、シート1とシート2の氏名の並びが同一の場合と、そうでないときの二通りを教えてください。よろしくお願いします。

  • Excelでマクロを使用した削除に関して

    マクロ初心者です。 Excelにて、以下のような表データがあるとします。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50  a   b   c   d 3行  51  e   f    g   h    4行  52  i    j    k   l この表の中で、A列と1行目の値が同じになる交点となるセルの値"以外"を 削除して以下のように表示させたいのですが、 その方法がわかりません。     A列 B列 C列 D列 E列 … 1行      51  50  52  51    2行  50      b       3行  51  e          h    4行  52          k    単純な行削除・列削除ではないため、 頓挫しています。お知恵を拝借したく、よろしくおねがいします。

  • excel sheet の特定の列の行の下げ方

    1枚の sheet に a,b,c の表があります b 表のB列の合計を弄っているうちに b,c のB列の数字が1行上がってしまいました b,c のB列の数字を1行下げて元通りにする方法を教えて下さい

  • Excel 対象行のみ別シートに表示したい!

    こんな事できますでしょうか?? Sheet1に住所録の表を作成したしました。 A列 郵便番号 B列 住所 C列 名前 A列に郵便番号が、入っている行のみSheet2に表示したいのですが・・・ その際、歯抜けではなく空欄行が出来ないようにしたいのです。 おわかりの方教えてくださーい!

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

専門家に質問してみよう