あまりに突っ込みどころ満載なExcelテクニックの記事があったので、我慢しきれず突っ込みます

Excel これができなきゃ給料泥棒

スポンサーリンク

私はわざわざこのブログで、他所様のサイトの記事にケチをつける記事を書く気はないし、個人でやっているようなブログに対しては多少の間違いがあったりしても別に突っ込んだりする気は無い。

しかし、個人でやってるようではないサイトで、Excelのテクニックについてあまりにも突っ込み満載な記事を見つけたので、我慢できず今回はそれに対する突っ込みを書いていく。

当該サイトへのリンクを貼ったりはしないけど、まあもしググったりすればすぐ分かるでしょう。

該当記事


まずExcelの例題の問題文。
新旧の商品リスト(図の「商品リスト_0801」が新、「商品リスト_0730」が旧のシート)のセルを比較して、データに相違があるかをチェックするにあたり、条件付き書式を使うというもの。

この問題文に沿ったサンプルExcelファイルを私なりにこちらに作ってみた。

解法として、まず「ホーム」タブで「条件付き書式」ボタンをクリックし、メニューから「新しいルール」を選択するとのこと。まあここまでは良い。

次が問題。

「数式を使用して、書式設定するセルを決定」を選択し、条件欄に「=A2=商品リスト_0730!A2=FALSE」を入力し、「書式」ボタンをクリックします。ここでは、比較したいセルを「書品リスト_0730」シートのセルA2とします。

とのこと。いやもう、これ見た時に、憤慨ものだった。
いま赤文字にした「=A2=商品リスト_0730!A2=FALSE」という計算式を、式①と呼ぶことにする。

式①のどこが突っ込みどころか分からない?立派な参考になる解法だと思う?だとすると、ちと勉強不足だと思う。

というか、実際に操作してみればすぐ分かるはずの突っ込みどころがあるのだけど。

ちなみに、この計算式の設定後は「書式」ボタンを押してから、塗り潰し色を指定するなどして、条件付き書式の設定を終了すれば良い。

条件付き書式では絶対参照が必ず付きまとうのだが

では解説文にしたがって、条件付き書式の数式を設定してみよう。

条件付き書式の設定画面で「次の数式を満たす場合に値を書式設定」という欄をクリックしてから、
「書品リスト_0801」シートのセルA2をクリック
→「書品リスト_0730」シートのセルA2をクリックする

ということをやってみようではないか。

それを普通にやると、設定条件欄には「=$A$2=商品リスト_0730!$A$2」と、$マークのたくさん付いた絶対参照の式が表示されるはずだ。
まず「絶対参照」という言葉にサッと反応できない方は、率直に言って給料泥棒の段階なので、こちらの記事でも読んでいただきたい。

そして、この絶対参照式「=$A$2=商品リスト_0730!$A$2」を式①「=A2=商品リスト_0730!A2=FALSE」になるよう変換しようとするなら、F4キーを何度も押すか、手作業で$マークを消すか、いずれにせよだいぶ面倒な作業が必要だ。

そして、その面倒な作業には当然記事中で言及されるはずなのだが、全く言及されていない。

条件付き書式の条件欄でセルをクリックすれば、まず完全な絶対参照の式が表示されてしまい、状況に応じて適切な相対参照・複合参照の式に変換していかないといけない。
これは、Excelで実際に手を動かして条件付き書式の設定をした人なら、誰でも経験し通っている道であり、当然知っているはずだ。

この記事を書いた人は、実際の経験がろくになくて、テキストを読んでなんとなく身につけた知識で、想像中心で式①を書いたのではないかと思ってしまう。該当記事には

条件欄に「=A2=商品リスト_0730!A2=FALSE」を入力し、

と書いてあるが、この「入力する」というのは、セルをクリックしたりなんて全然しない完全な手入力のことを言っているのだろうか?
実際の作業でそんなことをするはずがない。「商品リスト_0730!」なんて複雑な文字列を、全て手入力したりするものか。

この例題では、「商品リスト_0801」シートと「商品リスト_0730」シートのA列どうしを比較するところまでで記事の解説は止まっているのだが、B列とかも同じく比較していくことを想定しているのだろうか。

だとすると、最終的な計算式は式①のような完全な相対参照で良いが、もしA列どうししか比較しないのであれば
「=$A2=商品リスト_0730!$A2=FALSE」
と、「A」文字の前にだけ「$」文字を付けた複合参照の式にしてA列を固定すべきだ。そこまで考えていてくれれば良いのだが。

「=FALSE」なんて書いたら駄目

第2の突っ込みどころだ。
式①「=A2=商品リスト_0730!A2=FALSE」は何やら「=」文字が3度も使われて、「=FALSE」で締められているが、こんな不細工な計算式を書いてはいけない。

別の記事でも少し触れているが、通常のExcel計算式でもVBAでも「=FALSE」などという式の書き方はスマートではない。

ましてこの例は、2つのセルの値が互いに等しいかチェックするだけの、ごく簡単なチェックだ。
これなら「=$A2<>商品リスト_0730!$A2」と、<> の記号を使えば、「等しくない」というチェックはできる。「=」記号を3度も使ったうえ「=FALSE」なんて、使ってはいけない。

この記事を書いた方は、もし「互いのセルが等しい」という条件で条件付き書式の設定をする場合なら
=A2=商品リスト_0730!A2=TRUE
などと蛇足極まりない式を書くつもりなのだろうか。まさかそんなはずはないよね。

小難しい計算式は不要

第3の突っ込みどころ。まあこれは、記事を書いた意図の汲み方しだいでは、突っ込むところではなくなるのだが、一応述べておく。

この例では、条件付き書式を設定するセル自身を他のセルと単純に比較するだけだから、その場合はわざわざ色んな記号とか使った長い計算式を組まなくても、
条件付き書式の設定画面で「指定の値を含むセルだけを書式設定」を選び、「セルの値」「次の値に等しくない」を選んで条件入力枠には「商品リスト_0730!$A2」と書けばそれで済む。そもそも計算式を必要としないケースだからね。

まあこの例題を書かれた方は、このやり方を知っていて敢えて、計算式を設定するやり方を紹介しているのかも知れない。
実際、そのやり方を知らないようでは条件付き書式はとても扱い切れないからね。
でもなんかなあ。上記で色々と突っ込んだけど、そこまで考えてるようには思えないんだよなあ。

スポンサーリンク