Excel/Access

サブタイトルは「テーブルを使ってください、お願いします。」本当に大事なことに目を向けよう。

『「セル結合はするな」の解説』

 

 

「セル結合はするな!」

これ、よく聞きます。
しかしこれは、Microsoftが公式に発表しているわけではなく、
大勢のエクセルユーザー達が主張してるに過ぎません。
なぜ主張するのか?というのは
「計算が上手くできなくなるから」
「実務において有効な関数、有効な機能の弊害になる」
ことに繋がるからです。
でも、なぜ
「実務において有効な関数、有効な機能の弊害になる」ことが悪いのか?

 

 

「実務が上手く回らなくなるから」

「セル結合」を実際にするときを例に考えてみましょう。
この機能は、セルに入っているデータを整理したい、つまり書式の操作の1つです。
書式を整理したいユーザーを想定にMicrosoftが用意したものですから、
セル結合機能を使うことで書式を整理するのは、Microsoftの想定通り、
正しい使い方と言えます。
何よりも、「整理したい」というユーザーの業務(目的)をしっかりこなしている、
とも解釈できます。
「セル結合」をMicrosoftが用意したことも、
ユーザーがこれを使うことも、間違っていることは何もなく、むしろ正解です。

ただこれを使うことで、
「他の機能や関数や仕組みが使えなくなる」これも事実なんです。
例にあげると、並び替え、オートフィルター、ピボットテーブル、
SUMIF関数、COUNTIF関数、ショートカットキーでもただの列選択ですら弊害が起きます(実際はもっとたくさんあります)。
ここにあげた固有名詞、どれもとても重要なのはエクセルユーザーにはわかってほしいところ。
すなわち、実務が上手く回らなくなるわけですね。
「実務が上手く回らなくなること」は良いはずがありません。
"実務の為になるか・ならないか"が全て。
よって「セル結合はするな」です。

「エクセルに備わっている機能や仕組みを"今ある、やりたいことの為"
に使っても、"実務の為"にならないことはしてはいけない」
これがまとめです。
この考え方と同様のものを「セル結合ケース」と勝手に呼んでいます。

 

「セル結合ケース」

これが正体であり、実はここからが本題。
自分のやりたいことが実務のためかどうか、考えていない人が多過ぎます。
このとき「実務のためとは?」という疑問がでるはずです。
確かに、自身のレベル、現場のレベル、取引先のレベルなど考える要素は多いです。
それでも考えなくてはなりません。
仕事なら尚更です。

 

結論「マクロもセル結合も同類だ」

思い切って端的に結論づけます。
実務のためになるもの、それは「第三者に説明して理解されるもの」です。
いくら8時間の作業を10分に短縮するマクロができてもユーザー又は担当者に
理解されないものを作っては、返って危険ともいえます。
担当者にメンテナンス能力がなければそれは、
「実務が上手く回らない時期がくる」ことが約束されてますから。
「"今ある、やりたいことの為"といっても、後々事故に必ず繋がる。」
「マクロ」も「セル結合」も同じです。
わかってます。「職場のエクセルスキルがバラバラ!」問題ですね。
わかってますわかってます。人が集まればエクセルでも何でもそうなります。

 

 

やるしかない

私の職場では、"エクセル1番出来る人"と話をしたところ、
「テーブルわからない」「VBAわからない」「ProPlusわからない」
だったのでその方の育成にも取り掛かりました。
頼まれた数式を作るにも、マクロを作るにも、
"付随して用意する解説のクオリティに懸かってる"と思ってました。
時間も労力もとても必要ですが、
効率化の実現のためには、そうするしかありません。
(私の休憩時間はなくなりましたが、そうも言ってられません。)
「業務効率」とはマクロを書いて完了するものではありません。
それで済ませてしまうのはセル結合と変わらないということ。
エクセルスキルだけでは本質は変わりません。
大変でも実務ですから仕方ありません。



 

このブログに関して↓

eee-1048576.hatenablog.com

『なぜINDEX×MATCHは嫌われるのか?』



 

嫌われるとは?

前回あるあるを書いてみましたが、
今回はそこで出てきた「INDEX×MATCHの組み合わせ」の話を真面目にしましょう。
いつもに増して主観が色濃く出ます。
いつもと同様、内容が正しい・間違ってるかは自身で考えてみてください。

このINDEX関数とMATCH関数の組み合わせは実務ではよく使われました。
細かい説明はしませんが要は、2つの関数を組み合わせてセルを参照します。
これを「INDEX×MATCH(インデックスマッチ)」と呼ばれる、というもの。
前提としてこの使い方自体が嫌われているわけではありません。
この使い方を覚えた人の一部が"やや問題視されちゃう"ということです。
個人的に若い人の方がこの対象になる傾向がある気がします。
では、3つの観点から紐解いていきます。また3つ目が最も重要です。


1.VLOOKUP関数と比べるな!

問題視されちゃう人の最も多いのが「VLOOKUP関数批判」でしょう。
INDEX×MATCHを覚えた途端、VLOOKUP関数に対して過度にネガティブになります。

「VLOOKUP関数で出来ないことをINDEX×MATCHなら可能です!」
という見出しが非常に多いのは確かですが、これ考えてみて下さい。

「1個の関数で出来ないことを関数の組み合わせなら可能」というのが本質的な解釈。
「VLOOKUP関数の上位互換的なものがINDEX×MATCH」では全然ないです。


2.INDEX×MATCHって20年前の話!

この2つの関数が実装されたのは約20年前。
同じ年には日本で初代iPhoneが発売されています。
"初代iPhoneのTipsを令和で主張することの価値"は、1度考えた方がいいでしょう。
因みに、「VLOOKUP関数で出来ないことをINDEX×MATCHなら可能」という類いのもの。
このほとんどがINDEX×MATCH使わなくても可能です。
昔からやり方は何通りとあるわけです。
もうXLOOKUP関数が実装されてからもしばらく経ちました。


3.ダニング=クルーガー効果

ここからが大事です。INDEX×MATCHは忘れてください。
「ダニング=クルーガー効果」とは、
能力や専門性や経験の低い人は自分の能力を過大評価する傾向がある、
という認知バイアスについての仮説である。
また、能力の高い者が自分の能力を過小評価する傾向がある、
という逆の効果を定義に含めることもある。(引用:Wikipedia)
つまり…
「ちょっと勉強したとき、途端に自分を過大評価する。

もっと勉強を進めると、自分を過小評価する。という現象」と思ってください。

(この効果自体の賛否はスルーします)
この名前自体は知っている人もいるでしょう。
今回は、INDEX×MATCHを皮切りに書きました。
「私VLOOKUP嫌いなんですよね~。INDEX×MATCH使うんで。」という人、
正直たくさん知っています。こういう現象が起きてしまうのが人間です。

エクセルとか、ビジネスシーンとかに限らず、日々のアップデートが大事。
「今、最適解のものが1年後には変わってる。」
これはこれで大変ですがそっちの方が健全だと、私は思います。



このブログに関して↓

eee-1048576.hatenablog.com

「Excelあるある」を学びに繋げたい!


○○あるあるエクセルバージョンを可視化。

そこからどうにか学んでみようと思います。

アクセス、Googleスプレッドシートバージョンも

ネタは溜め中。なのでこの記事は随時更新です。



関数得意か、VBA得意かで分かれる
…頑張ります!


カレンダー作らされる
…内容としてはけっこう有りだと思います。


INDEX×MATCH大好き(っていう人)
…揶揄してますすいません。

『なぜINDEX×MATCHは嫌われるのか?』 - Excel/Access



@の使い方が多すぎ
…1.書式記号 2.テーブルの演算子(名前わからない) 3.暗黙的なインターセクション演算子


1899年12月31日を入力してみる
…"1899年12月31日"

『シリアル値って何ですか?』Aさん - Excel/Access


いつのまにか増えてる新しい関数
…ちゃんと触ってないと、すぐ置いてかれますね。


総務省の資料もイマイチ
…あれだけじゃ肝心な使い方がわからないです。

『元データとか、データベースって何ですか?』Aさん - Excel/Access

 

『エクセルに使い方ってあるんですか?』Aさん - Excel/Access

『シリアル値って何ですか?』Aさん

\エクセルの日付=シリアル値/



 

概要

まず、実務で日付を扱うことはとっても多いです。
そのため“エクセルで日付を扱うこと”が何を意味するのかを理解します。
下記はNGケース(例2001年4月1日)。
2つ並べましたがどちらも日付ではありません。
日付ではないなら何なのか?
上は「20010401」という文字列
下は「2001」と「4」と「1」という数値です。



シリアル値

まずシリアル値は、数値に関する仕組みのことです。
コピーのような機能の話ではありません。
日付を扱うための数値に関する仕組みと理解してください。
その仕組みとは、
"1" を「1900年1月1日(日)」とする。 1足すごとに”プラス1日” 。
"2"は「1900年1月2日(月)」
"3"は「1900年1月3日(火)」
"2001"は「1905年6月23日(金)」
"36982"は「2001年4月1日(日)」といったものです。

「なんで"1"が1900年1月1日がなの?」とかは考えないでください。単に仕様です。
曜日も同じようにセットでついてきます。
万年カレンダーみたいにエクセルは日付を管理している」とわかれば十分です。

シリアル値(日付と時刻)

この表のシリアル値はすべて整数なのがわかります。
シリアル値の整数部分は、“日付”を表します。



時刻を表にしました。
シリアル値の仕組みは小数部分も例外ではないです。
シリアル値の少数部分は、“時刻”を表します。


正確には0時0分0秒を"0"として、
あとは1秒増えるたびシリアル値は86,400分の1増えます。
86,400という数字は、1日=86,400秒(24時間×60分×60秒=86,400秒)から。
例えば、2023年4月1日23時59分59秒のシリアル値は"45017.9999884259"です。


シリアル値(表示形式)

上記のように日付はシリアル値です。
2001年4月1日(日)は36982です。

ここで大事なのは、
日付を扱うとき、表示形式もセットで使うことがマストということです。

eee-1048576.hatenablog.com

y
西暦年を表す

m
月を表す

d
日を表す

a
曜日を漢字で表す

g
和暦を表す

よく聞かれるシリアル値と表示形式

「1/3と入力すると1月3日となる」
「1-3と入力すると1月3日となる」
日付のつもりで入力していないのに、日付と扱われます。
エクセルが“勝手に”日付と解釈し、さらに“勝手に表示形式を設定"しています。
これも「なんでエクセルが勝手に決めるの?」と考えることではありません。仕様です。

解説
1.「4月1日」と入力…エクセルが日付と解釈、さらに表示形式「○月○日」が設定される

  4月1日 表示形式が、デフォルトの「標準」から「○月○日」に変更

2.「4月1日」を削除…値を削除しただけなので表示形式「○月○日」の設定は残ったまま
      表示形式「○月○日」のまま

3.「2023/4/1」と入力…設定済みの表示形式「○月○日」により表示が「4月1日」となる
  4月1日 表示形式「○月○日」のまま


表示形式で困らない

入力したものが日付と解釈されたとき、エクセルが表示形式を“勝手に”設定することがあります。
ただこれは、表示形式を知っていればほとんど困りません。
大事なのは、セルの「表示形式」は自分で把握する・操作するという認識をもつことです。


1900年2月29日(余談)

この日は「日付」として認識されますが、実際には存在しません。

この日付を含んだ計算をするときだけ注意が必要です。つまりどうでもいいです。


シリアル値、表示形式、VBA

VBAで日付を扱うことも当然多くあります。
そのとき、この、シリアル値と表示形式の知識に加えて、
VBAの各機能の仕様も知っておかなければなりません。兎に角気を遣うことが多いです。
そのときも基本となる知識は、
シリアル値と表示形式ですので、忘れないでいてください。



 

このブログに関して↓

eee-1048576.hatenablog.com

『テーブルって何ですか?』Aさん

\「使わない理由がない」入門機能/



 

概要

「使わない理由がない」でおなじみなのがこのテーブル機能。
つまり全員使うってこと。
おなじみというのは田中亨さんのコメントです。
改めて「テーブル」というのは、表に関する機能の名前です。

support.microsoft.com

構造化参照の読み方

テーブルは”ただの表”を”データベースとする機能”とも言えます。
そのためここからはデータベースに沿った考え方。
まず、数式の記述がこれまでとは異なります。
ここは記述のルールを理解しておく必要がありますが、
これまで通りに数式を組めば記述(入力)は自動でされます。
この参照形式を「構造化参照」といいます。

support.microsoft.com

 

テーブルの外側で[金額]列を参照し、その右側に参照した数式をだしています。
数式の意味を1つ1つ理解しましょう。

=テーブル1[[#見出し],[金額]]
「テーブル名」…テーブルにつく固有の名前。


=テーブル1[[#見出し],[金額]]
「特殊項目指定子」…項目の名前。「見出し」「データ」「集計」などがあります。


=テーブル1[[#見出し],[金額]]
「列指定子」…列の名前。このテーブルの場合、「日付」「単価」「個数」「金額」。
列指定子=見出し名というわけです。

=テーブル1[@単価]*テーブル1[@個数]
@…”この行”という意味。これも特殊項目指定子。


構造化参照の特徴

1行、1列単位
1つ1つのセル単位の概念はなくなります。

1つのセルだけを削除することもできません。
テーブル内では何事も1行、1列単位で行うというわけです。
数式を組むときも1つのセルだけに入れるのではなく、
1列に同じ数式が基本的には入力されます。
これは”テーブルだから”というより、”データベースだから”です。

範囲の自動調整
データが追加や削除されたとき、テーブルの範囲も自動で調整されます。

テーブルとは表に対しての機能なので、
表と同じようにテーブルにも「範囲」が存在します。
そして実務で使う表(元データ)はデータが追加されることは常にあり、
表を元に計算する範囲も常に変わり得ます。
そんなときでも範囲のメンテナンスは必要ありません。


[データ]を省略
実務では「特殊項目指定子」を「データ」とすることが多いです。
それはデータ部分を計算に使うことが多いからです。
そしてデータ部分を計算に使う(参照)するときは、
特殊項目指定子の記述「データ」は省略できます。
特殊項目指定子の記述が省略されているとき、
「データ」を参照しているということ。


テーブル名の変更
実務では「テーブル名」を英語名に変更するといいです。
テーブル名はテーブルを参照するときに使うのですが、
他のシートからテーブルを参照するときシート名を指定しなくていいのは、
「名前の管理」のルールによるものです。


配列の
(角かっこ)は「配列」の記述のルールによるものです。
これはテーブル独自のものではありません。
ワークシート上のセルの概念はなくなるので、
これまでの「セル」をテーブルでは「配列」として捉えているわけです。
「配列」が何か?については、しばらくは知らなくていいです。


エクセルの使い方(余談)

今や実務では必要なデータをクラウドで管理することが一般的です。
そしてテーブルが初めて実装されたのはOffice2007から。
時代に合わせて道具(エクセル)の使い方が変化するのは自然なことです。
エクセルではそのクラウドからデータを下ろしたとき、
表の形式が“自動で”テーブル形式となります。
他の機能「取得と変換」「スピル」でも“テーブルを前提”とした仕様。
あるいは「入力規則」「条件付き書式」「ピボットテーブル」などの
実務で必須な機能や新しい機能、新しい関数もテーブルを元に使って初めて、
実用性が生まれます。
このようにMicrosoftは以前から、テーブル前提、テーブルを推奨していることがわかります。

「なぜテーブルは広く活用できるのか?」

理由はシンプル、明白です。
エクセルに限らず表計算ソフトは、いわば“データベースの考え方を用いる”ソフト。
そしてテーブルは、エクセルが持つ特別な”データベース領域”です。
つまりテーブルとして表(元データ)を扱うことがセオリーであり、
セオリーに従うから応用が利くわけです。
当然、セオリーに反するエクセルの使い方を続けると
他の作業・運用に支障が必ずでます。
「仕事の効率化」とありきたりな目標を会議で決めるくらいなら、
まず元データをテーブルにしてください。話はそこからです。



このブログに関して↓

eee-1048576.hatenablog.com

『コピーを正しく使おう(前半)』

\"何を"コピーしてますか?/



 

概要

コピーは知っての通り「機能」の1つ。みんな使います。
それなのにコピーを理解してる人に、私は会ったことがありません。
というかどこにも載ってません。
コピーの仕組みについては次回以降の(後半)というタイトルでまとめます。
(正直、知らなくても支障ないです。)
今回の(前半)では、もっとシンプルな話。

support.microsoft.com




"何を"をコピーするか

「こっちのセルの“何を”コピーして、あっちのセルに貼り付けるのか」

左のセルを別のセルに“そのまま”コピーすると、“何が”コピーされるのか?
まず"1000"という数値データ。
他にも3桁カンマ、黄色の背景色、外枠罫線などのすべての書式。
さらにここでは書ききれない程の情報がコピー先へ貼り付けられます。
これがコピーであり、エクセルの仕様です。




貼り付け

実務では「コピー元の”すべての情報”はコピペしたくない」ということもあります。
理由は大きく2つ。
1つは、コピー元のすべての情報を知っている状況があまりないから。
もう1つは、すべての情報をコピペしたら余計な情報も付与されかねないからです。

「値」「書式」の2つの貼り付けは覚えます

実務では「コピー元の”値を”
”書式を”コピーしたい」ことが多いです。


まずはこの2つを覚え、それから必要なものを加えて覚えていけばいいです。
(実際は数種類覚えるのがマストです。)
この貼り付け方法はいくつもあるので、慣れたやり方でいいです。
兎に角「形式を選択して貼り付け」ダイアログ。これをたくさん使ってください。

 

support.microsoft.com

ブックを壊す”余計な情報”

コピー元の情報がコピー先へ貼り付けられる。
「値だけ貼り付けたら、空白に対して値を上書きして貼り付ける。」
「セルすべてを貼り付けたら、すべての情報を上書きして貼り付ける。」
「コピー元の情報を、コピー先の情報に上書きしている」ということです。

また書式が上書きされるということは、
書式に関する機能も上書きされ、元の設定は削除されます。
書式に関する機能とは前回の「表示形式」や次回以降やる「条件付き書式」など。
「表示形式(や条件付き書式)がいつのまにか消えてる!」なんて、よく聞きます。
ここではセルのコピーを通して考えましたが
入力作業でも、機能を設定するときにも、
セルで何かする際は必ず書式の仕組みがついてまわります。
書式を気にしないでセルを触ることはあり得ません。



このブログに関して↓

eee-1048576.hatenablog.com

『表示形式って何ですか?』Aさん

\「エクセルの基礎」です/



 

概要

「表示形式」の話。今回はこれまでと違って用語がけっこう出てきます。
表示形式とは「書式」という仕組みの中にある1つです。
なので書式から知っていきましょう。


セルの見た目に関する「書式」

ここ、エクセルでとても重要です。それが、
「セルには、"入っている情報"と"見えている情報"がある。」
この"見えている情報"が書式だと思ってください。

新しく何か加えるとき、変更するとき、確認するとき、
セルを操作するときは常に、2つの視点を意識します。

"何もしない"としましたが、書式がないわけではありません。
「標準」として、フォントの色が黒、塗りつぶしがなし、3桁カンマがなし、
他にも罫線、セルの列幅、小数点以下の表示などなど。
セルに"入っている情報"をどう見せるか、は書式によって決まります。
セルがあるかぎり、そこには書式もあります。


書式の操作

因みに、[ホーム]タブのほとんどが書式を設定する為のボタンです。


[ホーム]タブからでも、別の手段から書式を変えても、
管理しているのは「セルの書式設定ダイアログボックス」
エクセル実務で使用するダイアログの中で、最も使います。


このダイアログのだし方に関して↓

eee-1048576.hatenablog.com

書式の中にある「表示形式

書式は仕組みとしてはとても重要です。
そして実務でより重要且つ、難しいのが表示形式と思ってます。

表示形式を使う理由2つ

表示形式を使うことで、
2を「2個」、100を「100円」、サトウを「サトウ様」、1000を「1,000」
と見せたりできます。
「なぜ2個と入力するのではなく、2と入力し表示形式によって“2個”と見せるのか?」

1つは、「データ」と「単位、敬称」は別ものだから。
もう1つは、数値は四則演算ができて、文字列はできないからです。

はじめはピンとこなくてもいいです。どちらも運用上、都合がいいわけです。
エクセルで数を扱うときは、
「数値データには表示形式を組み合わせる」くらいの気持ちでいていいかもしれません。
データ?数値?四則演算?に関して↓

eee-1048576.hatenablog.com

 

 

表示形式自体の種類2つ

表示形式をざっくり分けると、
予め用意されているもの、自分で作るものの2種類と考えます。
自分で作るものを「ユーザー定義の表示形式」といい、
実際ではほとんどが自分で作る(人が作った)ものを扱います。

support.microsoft.com



表示形式のルール2つ

いよいよ作るにあたってのルール。ここで苦労する人が多いです。頑張りましょう。
ここでも2つに分けました。

使い方1「書式記号」
”表示形式のときだけの機能”となっている記号がいくつかあります。
使いながら必要なものだけ覚えましょう。
(下記のもの以外にもあります)

0
任意の桁数分“0”を見せる/数値の見せ方を変えるときの数値の代替

, (カンマ)
桁の末尾…4桁以上の数値の、カンマの数だけ3桁を省略
桁の途中…4桁以上の数値の、3桁ごとにカンマをつける

# (ハッシュ)
任意の桁数分“0”を見せない

@
文字列の見せ方を変えるときの文字列の代替


使い方2「;(セミコロン)」
実務では数値が、
「正の数のとき○○と見せたい」
「負の数のとき▲▲と見せたい」
「ゼロのとき ・ ・ と見せたい」
のように“数値の大きさによって見せ方を変えたい”ことがよくあります。
そんなときは、セミコロン“ ; ”で区切る、それだけです。

support.microsoft.com


「正の数負の数ゼロ文字列」
区切ったら各セクションに表示形式を設定します。設定の書き方は使い方1の通り。




「表示形式」で色を変えるな(余談)

表示形式では色の操作もできます。詳細を知る必要はありません。だってするべきではないから。
「数値がマイナスのとき赤にする」のはよく見るのでわかりますが、
そうでないのはやめてください。
データの内容によって色を変えるなら別機能の「条件付き書式」です。
表示形式で色を変えられることを知っている人は極端に減ります。
この表示形式に限ったことではないですが、
あまり知られていないことをわざわざする人というのが一定数います。
実務で使うブックは当然複数人が使うので、
同じ目的が果たせるのであれば、よく知られている方法でやってください。
”他人と同じことをする”というのは、
可読性が増して使い勝手が良くなり、事故を起こしにくくする最も簡単な手です。


サンプルブック(余談)
今回はサンプルブックがありますので、方法がわかり次第添付します。



このブログに関して↓

eee-1048576.hatenablog.com