- ベストアンサー
転記 マクロ VBA
VBA初心者です。今シートが2つあり、一つは「明細」シート、もう一つは「入力」シートです。明細シートは3万行程あり、列はA~Sまであります。入力シートも全く同じ列並びでA~Sまであります。共にA列が伝票No.という項目になっており、今このA列にどんどん伝票No.を入力していき、最後に転記ボタンを押して残りのB~S列を明細シートから一発転記できるマクロができないかと考えております。どなたか詳しい方教えて頂けないでしょうか。宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まず、下記サイトをご参照下さい。 http://www.officepro.jp/excelvba/ VBAの基礎が載っています。 つぎに、どこから作ったら良いか見当が付かない場合、機能をばらして中核機能をつくってから、周辺機能を作ると良いです。具体的には、以下のようなステップで作ってはどうでしょう。 1.Inputbox関数で読み込んだ伝票Noを明細シートのA列から検索し、見つけたらその行のB列以降の値をMsgbox関数で表示する。 2.1のプログラムを修正し、InputBoa関数の変わりに入力シートのA2セルから読み込み、B2セル以降に書き出すようにする。 3.2のプログラムを改良し、Inputbox関数で繰り返し回数を入力し、A2からその回数分繰り返すようにする。 3万行のデータの検索するのは、VBAにしても遅いと思います。明細シートのデータが頻繁に変わらないのであれば、テキストファイルにして配列上に読み込んで検索したほうが、高速化になると思います。 では。
その他の回答 (3)
- hige_082
- ベストアンサー率50% (379/747)
申し訳ない 初心者には厳しいかもしれないが 何でも聞けばいいというものではありません 質問の内容は、解説書等でも最初の方に書かれている 基本的なマクロの組み合わせで出来る処理です 基本的なことが解っていなければ、回答を貰っても 理解できないのではと思います まずは、解説書やakina_lineさんお勧めのサイトをご覧ください
お礼
本当におっしゃる通りだと思います。ご指摘ありがとうございます。再度勉強してから出直します。
- higekuman
- ベストアンサー率19% (195/979)
VBA初心者とのことですが、どの程度分かっているのでしょうか? そして、どこまで試してみたのでしょうか? とっかかりさえつかめない、というレベルでしたら、VBAではなく、#1がおっしゃるようにVLOOKUP関数を使ったほうが良いと思いますよ。
- akina_line
- ベストアンサー率34% (1124/3287)
こんにちは。 マクロではなく、関数でやってはいかがですか。 関数 VLOOKUP(検索値,範囲,列番号,検索の型) 例:入力シートB2のセルを明細シートから検索する式 =VLOOKUP($A2,{入力シートの全体範囲},2,FALSE) 1行目はタイトルが入っていると仮定して、2行目から式を入れます。詳しくはヘルプを見てもらうとして、「検索値」は明細シートのA列から検索するための値で、入力シートのA2ですね。「範囲」は明細シートのデータの入っている範囲です。この場合、シート全体でよいと思います(データがB列から入っているような場合は、B列以降の範囲を指定します。)。「列番号」明細シートの何列目を替えるか指定するためのものです。B列を返したいので、2を指定します。 この式のままセルの右下をドラッグしてコピーすると列番号は2のままなので、各列ごとに、Cは3、Dは4・・・としてやる必要があります。これが面倒な場合、入力シートの2行目に1,2,3,4・・・というデータを入れ、式を下のように変えるとよいでしょう(B3に入れます。)。 =VLOOKUP($A3,{入力シートの全体範囲},B$2,FALSE) なお、検索する表が大きいと、データ入力中に待ち状態になるかもしれませんので、自動計算をOFFにしておくほうがよいかもしれません。 では。
補足
早速のご回答ありがとうございます。実際今はその関数でやっていまして、ところがファイルのデータが非常に大きいのに困っています。そこでその対策としてマクロをと考えています。何とかなりませんでしょうか?
お礼
初心者の私に、また不勉強な私にご丁寧なご指導ありがとうございます。お勧めのサイトを参照させていただきました。非常に分かり易く感じます。