Excelにバーコード入力したくなって、perlでプログラム書いちゃった

Excelにバーコード入力をする場合、1つ読んだら下に移動(Enter入力)か右に移動(Tab入力)しか出来なさそうです。

社員番号と注文番号を交互に読んで、

社員番号 注文番号

1111         1

2222         2

 

こんな風にしたいのですが。で、考えました。

 

バーコード  社員番号 注文番号

1111            =A2         =A3

1                  =A4         =A5

 2222

2

 

A列に社員番号と注文番号を交互に読んでいき、参照させれば良いのでは。

参照して、下のようになる。

 

バーコード  社員番号 注文番号

1111     1111         1

1              2222         2

 2222

2

 

予想通りになりました。しかし、規則性があるのでExcelのオートフィル機能でB列はA2、A4、A6・・・とやってくれるかと思ったら、出来ませんでした。

手打ちで書くとなると、果てしなくめんどくさい。社員200人くらいまで大丈夫な物を作るとなると400セルも打つことに。

んー、プログラムでCSVファイル書き出せばいいんじゃない?と思い、perlで書いてみました。

 

ソース

my $count;

$count = 1;
while ($count < 400){
 print ",=\$A\$$count,";
 $count ++;
 print "=\$A\$$count\n";
 $count ++;
}

 

解説

my $count;

$count = 1;
while ($count < 400){    iが400になるまで繰り返す
 print ",=\$A\$$count,";  初回で,=$A$1を書く。A列を空白にするため、先頭に,がある。
 $count ++;
 print "=\$A\$$count\n"; 初回で,=$A$2と改行コードを書く。
 $count ++;
}

 

実行してCSVファイルにリダイレクトしてファイル出力する。

> perl num.perl > num.csv

出来たCSVファイルの中身。

,=$A$1,=$A$2

,=$A$3,=$A$4

・・・・・

,=$A$399,=$A$400

 

このCSVを元に、VLOOKUPとCOUNTIFを使って集計し、当日分の注文書を作成、マクロで値貼り付けをして月間注文を集計するシートも作りました。長くなるのでExcelの内容は割愛。気が向いたら後日書きます。

 

Excelだけで簡易的な弁当発注システムが出来ました。後はバーコードリーダーを買うだけです。(無いんかい)