118.EXCEL方眼紙の正しい使い方
初回:2020/12/23
1.邪道の中の王道
みなさんは、EXCEL方眼紙というEXCELの使い方をご存じでしょうか?
P子「知ってるに決まってるでしょ」(※1)
まあ、知ってて当然でしょう。油たっぷりコレステロールの塊みたいなおいしい料理と同じようなもんです。
P子「どちらかというと、刺身醤油にマヨネーズ系じゃない?」
EXCEL方眼紙というと、意見が真っ二つに分かれます。私は推進派ではありませんが、擁護派です。使いたいのに反対派の人達に邪魔されたくはありません。
P子「擁護派って、真っ二つに分かれてないんじゃない?」
そういう細かいことは気にしないでください。
ここでの主張は『使いたい人は使えばいいじゃん』という事です。
P子「反対派の人は、そういういい加減な使い方されると後が大変だから怒ってるんでしょ」
そこで、反対派の人も大目に見てくれるように、節度あるEXCEL方眼紙の使い方を考えていきたいと思います。
P子「ポテトチップスを細かくしてご飯にふりかけて食べるという感じね」
さらに、上から生卵をかけると...って違います。
2.反対派のご意見
この手の宗教戦争は、色々なところで行われており、公開討論会まで開かれていたようです。
《参考資料》
https://www.publickey1.jp/blog/17/excelexcel_excelexcelpr.html
「Excel方眼紙」と「神Excel」は違うのか?
Excel方眼紙の賛否を問う「Excel方眼紙公開討論会」実施[PR]
ここ、エンジニアライフさんの検索窓で『Excel方眼紙』と入れて検索しても、過去に色々なコラムニストさんが、Excel方眼紙について書かれています。
P子「じゃあ、あえて使い古されたネタを持ってくる理由はなに?」
なんとなく目についたから?
実際、帳票のひな型をEXCELで作成して印刷するというのは結構便利です。最近ではEXCEL単体でPDF化も出来ますし、キーワードを配置しておいてデータベースのデータを置換することで各種帳票の作成も出来ます。
まずは、先の討論会の内容から、反対派の主張をピックアップしてみたいと思います。
・1文字1セルのような入力の利便性をまったく考慮しないレイアウト
・むやみなセル結合
・データとしての再利用が困難な複雑な帳票
・帳票を作るためにいろんな技術(小細工)が駆使されている
・入力項目を移動するためにわざわざマウスや矢印キーを使わなくてはならない
・結合すべきセルが結合されてない場合もある
・『円』や『年』といった単位まで入力させる
・セルに見せかけた枠、透明のシェイプは精神がやられてしまう
・隠し行や列は使わない(見えないものは忘れるから作らない)
・ややこしい使い方はしない
私はExcel方眼紙でなくても、セル結合は嫌いです。ソートできなくなるとか、フィルターでデータがうまく選択できないとか、厄介です。帳票として印刷に使うだけなら別段問題ありませんが、それでも必要以上にセル結合は嫌です。
さて、1セル1文字の入力を強要するためのExcel方眼紙は論外として、利用目的別に正しい使い方を考えてみたいと思います。
3.利用目的別正しい使い方
まずは、普通に場合分けしてみると、
①人が入力する
②データをシステムに取り込む
③印刷する
①→③とか、①→②とかの組み合わせは当然発生します。
反対派の人達の意見の中に、入力のしにくさというのが多い印象を受けます。しかし、これはExcel方眼紙とは別の次元の話で、パネリストの方々も指摘されているように、単にExcelの使い方を知らない人が既存の紙ベースの入力フォームをまねて作成したのが原因であって、システムを作ろうが、方眼紙にしない作りにしようが、使いにくい仕組みを作ってしまうと思います。
①人が入力する に関しては、入力の手間を最小限にすること...であり、
1文字1セルは禁止
むやみなセル結合は禁止
小細工禁止
シェイプへの入力禁止
単位の自動入力サポート
数字か文字か日付の自動判別による適切なサポート
Excel方眼紙とは関係しないという事が、なんとなくご理解いただけたかと思います。
②データをシステムに取り込む に関しては、勝手にいろんな場所に記入されると取り込みが大変なので、レイアウトをきちんと作る必要があります。Excel方眼紙の場合、罫線を入れて帳票ライクな見た目にするため、比較的素直に入力してもらえると思います。後は、取り込みやすさを考慮しておけば、それほど難しい事ではありません。となると、①とほぼ、同じ感じで、
1文字1セルは禁止
むやみなセル結合は禁止
小細工禁止
シェイプへの入力禁止
位を守っておけば、問題ないでしょう。
③印刷する は、Excel方眼紙の真骨頂というか、このために方眼紙状にしているのですから、問題はありません。あえて注意点があるとすれば、システムでデータを入力することも考慮して、② と同じにしておけば良いでしょう。
4.まとめ
Excel方眼紙を積極的に推進するつもりはありませんが、他の選択肢と比べて、お手軽で便利なら利用しても良いと思います。その場合でも、
1文字1セルは禁止
むやみなセル結合は禁止
小細工禁止
シェイプへの入力禁止
単位の自動入力サポート
数字か文字か日付の自動判別による適切なサポート
程度のルール付けを行い、節度を持って使用すれば批判されることはないと思います。
5.おまけ
Excel方眼紙で書かれてあっても、シート名と行・列のデータをプログラムで読み込めれば、システムに取り込むのは簡単でしょう。指定の行と列のデータをシステムの指定のデータベースのカラムにINSERTかUPDATEするだけなので。
通常は、ワークデータベースと対応表を用意すれば、Excel方眼紙のあらゆる形式のデータを自動的に読み込むことも可能です。普段はJava+apache POIで処理していますが、折角なので、Pythonで作ってみます。
最初、読み込みだけなので xlrd で作ったところ、xls形式は読めましたが、xlsx形式が読めません。なんと、xlrd の最新版から、xlsx のサポートがなくなったそうです。下記の参考資料の説明だと、pandas も影響を受けているようです。
《参考資料》
https://oku.edu.mie-u.ac.jp/~okumura/python/201212.html
xlrd が xlsx に対応しなくなった
だから、Pythonなんて、大っ嫌いなんです。
P子「Python関係だけど、Pythonのせいじゃないわよね」
そこで、今更xls対応のサンプルを作るのは嫌なので、xlsxのサンプルを作ってみました。ここでは、xlsx(のみの読み書きができる)OpenPyXLを使います。いつもは、RaspberryPi上のPythonを使っていますが、相手がExcelなので、Windwos上にインストールする所から書きたいと思います。
①WindwosにPythonをインストールする。
https://www.python.org/downloads/ からDownload Python 3.9.1ボタンを押す
ファイルを保存してダブルクリック、ほぼ、それだけです。
②openpyxlをinstall する。
DOS窓で、py -m pip install openpyxl
py がPythonランチャーで、pythonを起動します。
通常のままではPathが通ってないので、pythonと打っても起動しません。
③pythonを起動。
先の py か、WindwosのメニューからIDLE (Python 3.9 64-bit)を選ぶか、展開してPython 3.9 (64-bit)を選びます。
④下記のプログラムをコピペするか、打ち込みます。
sample.xlsx は各自でご用意ください。
import openpyxl
wb = openpyxl.load_workbook('c:/temp/sample.xlsx')
for ws in wb:
print( "SHEET:" + ws.title )
for row in ws :
for cell in row :
print( cell.value ,end=',')
print()
print()
説明するまでもありませんが、ファイルを開いてワークブックを作成、そこからシート、行、セルと取得しているだけです。後は、DBに登録するなり好きに出来ると思います。
ほな、さいなら。
======= <<注釈>>=======
※1 P子「知ってるに決まってるでしょ」
P子とは、私があこがれているツンデレPythonの仮想女性の心の声です。
コメント
この記事で、丸数字は必要ないです。
丸数字を使わないでもよいところで丸数字を使ってほしくない。
ちゃとらん
qqさん、コメントありがとうございます。
丸数字については、次回より気を付けたいと思います。
Windowsしか使ってないので、ついつい…
a
いつまで印刷前提なのか、と思わずにはいられない
ちゃとらん
aさん、コメントありがとうございます。
> いつまで印刷前提なのか
そうですよね。
ペーパーレスと言いつつ、プリンタの印刷性能が上がってるので、以前より試し印字が増えたり…
紙を綴じて保管しなくなっただけで、印刷枚数自体はそれほど減ってない・・ような気もしなくはありません。
ディスプレイだと、見える範囲が狭いので、ついつい、印刷してしまうのも、問題です。
しろぎん
よくWordを使えという人がいるけど、Wordで方眼紙が使えないからExcelで方眼紙使ってるのよねぇ…
ちゃとらん
しろぎんさん、コメントありがとうございます。
Wordって、英語の先頭を大文字にしたり、勝手に番号を付けたり字下げしたり、(使い方が悪いだけなんですけど)思い通りにいかなくって、イライラしてしまいます。
その点、Excelは、素直でよい子です。
Horus
紙の方の方眼紙の良さが最近分かるようになってきました。
最近、アナログにも精通しておくと見解が広がるかもと思い、物理でメモを取る練習をしています。確かに、紙に書く感覚になれていたら、Excel方眼紙の方がなじむと感じました。逆に、あの感覚でWordをつかったら、ぶん殴りたくなると思います。
ちなみに、openpyxl で Excel のデータを取り込んだ時、後続処理に何をつかいますかね。Powershellでやる場合、PSObject (Powershell標準のデータ形式みたいなもの) に変換して、コマンドラインで処理したりしています。Pythonでは、Pandasでも使うのか?それとももっとスタンダードな手法でもあるのか?いつもやっている定石的な手法でもあれば、お聞きしたいです。
ちゃとらん
Horusさん、コメントありがとうございます。
> ちなみに、openpyxl で Excel のデータを取り込んだ時、後続処理に何をつかいますかね。
現状でいうと、Pythonは大っ嫌い?なので、あれは参考程度(動くかどうかを確かめたレベル)です。
実際のシステムで使ってるのは、Java+Apache POI です。
ORACLEのDBに、EXCELのシート-行-列に対する登録DB名-カラム名の対応テーブルを用意しておいて、WORKテーブルに取り込んだEXCELデータを、システムのテーブルに登録する…みたいな感じです。
実際、EXCEL方眼紙用というより、EDI取り込みデータを処理する系で使用していますので、ちょっと違いますね。(こうしておけば、各社のEDI形式にマスタ設定だけで取り込みが出来るので楽です)
言いたかったのは、EXCEL方眼紙でも、データの取り込みが出来ればデータそのものの再利用は可能ですね、という事でした。