スゴ技会計士からの挑戦状 VOL.23
11月 06, 2017
【繰り返しを操る技(実践編)】
前回ご紹介した「繰り返しを操る技」が、早速現場で役に立ちました!
膨大な量のコピペ作業を一瞬で終わらせることができました。
しかもほぼメンテナンス不要です。
会計システムにインポートするために、以下のようなCSVデータを作成したいことがあります。
部門(A列)ごとに科目(B列)を縦に並べて配置しています。
【問題6】難易度★★★
部門ごとに科目を配置したデータ(A、 B列)を関数で作成してください。
このくらいの量ならコピペでも良いのですが、部門数が100、科目コードが300あったら100×300=30,000行をコピペで作成しなくてはなりません。
しかも部門や科目が追加されるたびにメンテナンスが必要です。
手作業ではとても大変ですし、ミスも起こりやすくなります。
マクロでやろうとする人もいると思いますが、おすすめしません。
関数で簡単にできることをマクロでやっていては、かえって業務効率を下げる結果となります。
職場の全員がマクロの基本を身に付けていればまた話は別ですが、まずは関数でできないかを考えてください。
世の中に勘違いしている方がとても多いのですが、マクロができてもExcelができることにはなりません。
今回この作業をやっていたのはプログラム経験のあるシステムコンサルタントの方ですが、このようなレベルの高い方でさえ何時間もかけてコピペで作業することに疑問を持たないところがExcelの怖いところです。
繰り返しの単純作業ほどITが活躍する場面はありません。
このような作業に何時間もとられる前に、関数でできないかを考える癖を付けてください。
「ITを活用した問題解決能力」
を鍛えることができます。
先程の問題を、関数を使って解決してみましょう。
ぜひ以下の解答を見ずに考えてみてください。
では解答と解説に移ります。
通常は実務の中でいきなり解答を思い付くことはありません。
まずは観察して全体を把握します。
パターンが発見できればExcelを活用して何とかなるはずです。
最初に全体で何行作成しなくてはならないか把握しましょう。
数を数えることは規則性を発見するため基本です。
全体で必要な行数はCOUNT関数と掛け算で求めることができます。
=COUNT(D:D)
このようにできるところから可視化するのがポイントです。
頭の中だけで考えようとすると時間を浪費するだけです。
A列において同じ部門は4回、すなわち科目数だけ繰り返して次の部門に変わっています。
パターンを把握したら連番を活用して、関数で実現しましょう。
連番作成にはROW関数を使いましょう。
連番をゼロから始めるために「2」をマイナスしています。
=ROW()-2
K列の部門行では、表示したい部門がD列の何行目にあるかを求めています。
部門「100」を表示したいので「2」行目を表示するように調整しています。
=ROUNDDOWN(J2/$H$2,0)+2
L列の科目行では、表示したい科目がE列の何行目にあるかを求めています。
=MOD(J2,$H$2)+2
必要な行と列が分かればあとは簡単です。
=INDEX(D:D,K2)
この数式を部門と科目に必要な行数だけコピペして完成です。
部門や科目が増えても、コピペを増やすだけで対応できます。
単純作業は自分でやらずにExcelにやらせましょう!
このような意識は職場内で共有してください。
チームメンバーの意識を統一させるのがリーダーの役割です。