- ベストアンサー
ExcelVBAで大量のデータを入力する方法
いつもお世話になります。初心者ですが教えてください。 VBAで、ある一覧表を作りたく思います。 具体的には、A1に「店番」、B1に「店名」、A2:A500までは店番を、B2:B500まではそれぞれの店名を並べたいと思っています。 なお、店番は規則性のある数字ではありません。 例えば、店番と店名のイメージは、(店番,店名)とすれば、 (105,旭川)、(113,札幌)、(115,函館)、・・・・・(987,鹿児島)、(999,那覇)のような感じです。 これを作る場合、 Range("A2")=105 Range("A3")=113 とか、 Range("B2")="旭川" Range("B3")="札幌" などをそれぞれ500行書く以外に方法はありませんか? 私が想定したのは、例えば、 (A2:A500)=(105,113,115,・・・・・,987,999) とか、 (B2:B500)=("旭川","札幌",・・・・"那覇") みたいな書き方でセルにデータを入れるような方法があるのではないか?と思っていろいろ調べましたが分かりませんでした。 やはり無理でしょうか。もしご存知の方いらしたら教えてください。無理だということが分かるだけでも結構です。よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>ExcelVBAで大量のデータを入力する方法 この表現を見ただけで、エクセルVBAで、仕事に使ったことがないらしいことがわかる。 データ入力するーー>は正しくは、データ入力をサポートする、です。 データ入力をVBAでやる余地は、相当規則性がある場合でないと、しても無駄です。例えば出現の規則性があるときなどです。 テンキー打鍵とエンターで1セルに入力して、下セルに移るので 連続入力しても、キー打鍵のロスがありません。 >500行書く以外に方法 まあ省力化のメインは店番を入力しその店名は自動で店番から引くぐらいです。VBAでなくても、VLOOKUP関数でできます。 エクセルの入力規則(これ判りますか)の利用はまどろっこしいと思います。 >A2:A500)=(105,113,115,・・・・・,987,999) 何を考えているのか。配列みたいなのを、まさかソースの中へ店番を書き込むのではないでしょうね。そんなことはしません。 メモ帳に店番を打ち込んで、セルに読み込ませる方法はあります。 ーーー VBAを離れて、何が困っているのか、具体的に述べてみてください。 自分1人が入力するのか、他人にしてもらうのか 1回限りか毎日とか複数回か 店番・店名+データのデータに当たるものはあるのか、多いか。 ほとんど全銀行?店番1セット対象にデータ入力するのか。 (入力を飛ばした店の行を削除なんてのはVBAでできる) ーー 店番ー店名の対応テーブルは別途事前に作成しておき、VBAの中でも、使うべき場合は使うことは必須でしょう。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 (A2:A500)=(105,113,115,・・・・・,987,999) とか、 (B2:B500)=("旭川","札幌",・・・・"那覇") もちろん、これは、配列にすればよいと思います。 Ar1= Array(105,113,115,・・・・・,987,999) ←コンマ(,)が面倒 Ar2 =Array("旭川","札幌",・・・・"那覇") ←クォーテーションマークが、面倒だから、もしするなら、テキストにしておいて、正規表現置換を使います。 できた、配列を貼り付ければよいです。 ただ、それは、どこかにリストを作らなくてはなりません。たぶん、紙に書いたものがあれば、OCRで取れるのですが、カードになっていると、やはり一枚ごとになりますね。 ところで、500行程度でしたら、ワークシートに手入力でもたいしたことはないと思います。(そういう私は、目が悪くなったので自信がないのですが) というか、手入力の場合は、ワークシートで『縦の列ごと』に入れる(だけではないのですが)、独特のテクニックがあります。経験者の人なら、小一時間で作ってしまいますね。
お礼
ご回答ありがとうございます。 >ただ、それは、どこかにリストを作らなくてはなりません はい、他の回答者様も皆さんおっしゃられているので別途作成したいと思います。
- Cupper
- ベストアンサー率32% (2123/6444)
何か規則性があるのでしょうか。 規則性がないのであればVBAを使うにしても関数を使うにしても、店番号と店名に対応するテーブルを作る事をお薦めします。 テーブルがあればそれを参照するやり方でVBAや関数で一気にできますが・・・。 まさかとは思いますが、その元になるテーブルをVBAで作りたいという質問ではありませんよね。 VBA内で記述する手間で、テーブルの入力ができちゃいますよ。
お礼
ご回答ありがとうございます。 >まさかとは思いますが、 テーブルを作るだけが目的ではなかったのですが、ある集計作業(日々のルーティン)の一部分として、「店番・店名一覧」を入れた後、集計表を作る必要があったためです。 集計作業のつど、集計表のフォーマットを作成するのはナンセンスですよね。 >VBA内で記述する手間で、テーブルの入力ができちゃいますよ。 そのとおりですね・・・、そうします。ありがとうございました。
- marbin
- ベストアンサー率27% (636/2290)
店名、店コードのリストはどこかに作ってあるのでしょうか? 場合によってはマクロを使わなくても出来そうな気がします。
お礼
ご回答ありがとうございます。 そうですね、別の方法を考えたいと思います。
お礼
ご回答ありがとうございます。 私の知りたかった点をはっきり教えてくださり助かりました。 以下の部分が特にそうです。 >データ入力をVBAでやる余地は、相当規則性がある場合でないと、しても無駄です。例えば出現の規則性があるときなどです。 >店番ー店名の対応テーブルは別途事前に作成しておき、VBAの中でも、使うべき場合は使うことは必須でしょう。 >VBAを離れて、何が困っているのか、具体的に述べてみてください。 ありがとうございます。今回の件は、集計表のフォーマットを別途作成しておきそれを使うようにしたいと思います。が、今回の作業に関して他にも困っていることがありますので、別の質問を立てたいと思います。もしよろしければお力をお貸しいただければ幸いです。