一人総務部、今日も絶賛営業中ということで、仕事を便利にするExcel帳票なんてものを日頃からいろいろこしらえて業務の効率化なんぞを図っています。たとえば、弊社は取引銀行が3行あることから、請求書1枚ごとに振込手数料を最安にするためにどこの銀行から支払うかを事前に決めてその情報を書き起こすExcelファイルというものを作っています。これを作成しておくことで支払いの際にどの銀行でいくら振込手数料がかかるかを事前に知ることができ、毎月末の請求支払いと仕訳記帳の際にがっつり利用しています。
他には、岡山県や地元の町から受注した少額(10,000円~999,999円)の案件について、完成届と請求書を一括で作成するためのExcelファイルも日頃からよく利用しています。イメージとしては下記のような感じです。
シート1:工事や修繕案件の基本情報(案件名・請負金額・工期)入力シート
シート2:シート1の情報から完成届を生成するシート
シート3:シート1の情報から請求書を生成するシート
で、シート1にわちゃわちゃ工事情報を入力して、シート2とシート3の見てくれを確認したら、シート2・シート3をまとめてプリントアウトし、さらにシート3をPDF出力して電子帳簿保存法対策として保管しておく、みたいな業務フローを取るわけですね。
で、これを作成したときには、請求金額から消費税額をExcel関数式を用いて計算するのはいいとして、これらの金額を各桁分解して、一つひとつの数字をExcelの各セルにどうやって配置するか(ついでに金額の先頭にどうにかして円マークを付けたい)、という問題にぶち当たります。
金額は上限6桁とすれば、金額配置用のセルは円マーク配置の箇所含めて7桁分あればOKです。となると、下記のようなイメージになります。(クリックすると拡大します)
請求金額を「abcdef円」として各数字を配置するセル番地をA1~G1とします。具体的には、こんな感じ。Excelの関数を書くとわけわからんと思うので言葉で書いてみましょう。
【弊社総務部風・原始算数的メソッド】
A1:金額が10万円以上であれば「¥」、未満なら空白
B1:金額が10万円以上であれば金額を100000で割って整数化した値、0なら「¥」。
C1:【金額-a×100000】を1万で割ってそれを整数化した値。
D1:【金額-a×100000-b×10000】を1000で割ってそれを整数化した値。
E1:【金額-a×100000-b×10000-c×1000】を100で割ってそれを整数化した値。
F1:【金額-a×100000-b×10000-c×1000-d×100】を10で割ってそれを整数化した値。
G1:【金額-a×100000-b×10000-c×1000-d×100-e×10】の値
そう、むちゃくちゃ算数的な処理で、「abcdef円」を分解しているやり方なのですね。
ただこの数式、今見直すともうちょっと美麗な形でも書けることに気付きます。
こんな感じ。
【クールビューティー・数学的メソッド】
A1:金額が10万円以上であれば「¥」、未満なら空白B1:【金額を100000で割って整数化した値】を10で割った余り。0なら「¥」。C1:【金額を10000で割って整数化した値】を10で割った余り。D1:【金額を1000で割って整数化した値】を10で割った余り。E1:【金額を100で割って整数化した値】を10で割った余り。F1:【金額を10で割って整数化した値】を10で割った余り。G1:金額を10で割った余り。
で、こういう風に「数字を各桁に分解してExcelのセルに一つずつ放り込む方法」、実はchatGPTくんに聞いてみると全く違った方法を提示してくるのが、個人的にとても衝撃的でした。
曰く、数字を文字列として処理する方法(!)。具体的に言えば、最大6桁の数字を「¥abcdef」と円マークを付けた7文字の文字列として認識してしまう、となります。そのうえで各セルは下記のように配置していく、と。
【chatGPT版・文字列メソッド】
A1:文字列の左から1番目の文字。0ならば空白B1:文字列の左から2番目の文字。C1:文字列の左から3番目の文字。D1:文字列の左から4番目の文字。E1:文字列の左から5番目の文字。F1:文字列の左から6番目の文字。G1:文字列の左から7番目の文字。
この発想、数字を「数字」としてしかとらえられない自分には絶対に出てこない発想で、chatGPTくんに提示されたときには心底びっくりしました。「こんなやり方があるのか」と。
考えてみればたしかに合理的でなおかつ簡単。ましてExcelでの処理パフォーマンスを競うe-Sports「競技Excel」(参考リンク→こちら)の世界だったら、選手は全員が全員このやり方を選ぶでしょうし、競技Excelの世界で自分の原始的メソッドを繰り出していたら予選落ち必須と思われます。何せ数式記述量が多すぎる。
しかし一方で、これが会社のシステムとして業務で用いられるものだとしたら。chatGPTが提示した方法だとか、2番目に紹介した余りを使う方法だとかについては、担当者が変わった際に見て理解できるかという問題が生じるのも事実です。そして原始的メソッドでは少なくともその心配はない。それは「アルゴリズムが簡単」であるからです。少なくとも私が総務担当として帳票を作る際には「後任が見て理解できること」を重視したくなります。
単なる数字であっても、そのまま数字と捉えるか、文字列と捉えるか。その優劣はさて置いて、物事の捉え方は複数あるのだなあ、と思わされた事例です。
さてさて、同じ対象でも、見方や解釈の仕方によって全く別のものになる。そういえば、これに似た話をどこかで見たことがあります。
毎度おなじみ流浪の番組こと『タモリ倶楽部』の1コーナー、「空耳アワー」。外国語の歌詞が日本語に聞こえるというアレです。そして当Blog中の人がどうしても忘れられない、「物の捉え方は1つじゃない」ことをまざまざと天下に知らしめたネタの存在があります。
それはThe Beatles『抱きしめたい』の有名なサビのフレーズ、「I wanna hold your hands」。何度聞いてもわたしにはそのまま英語で聞こえる「♪アウァナホージョハーン!」の歌詞。
「♪アホな放尿犯~」


0 件のコメント:
コメントを投稿