Excelのバージョンについて

Excel テーブル

スポンサーリンク

今回は、Excelのバージョンについて、簡単に説明する。

最近Excelをやり始めた若い人とかだと、昔のExcelのバージョンとか言われても分からないし、なぜそれを押さえておかないといけないのか実感がわかないというのを見てきた。

そういう人達が、細かいExcelのバージョンの歴史とか無理に覚える必要はないだろうし、最低限おおまかに押さえておくべきことだけをまとめたいと思った。

Microsoft365とそれ以外

Microsoft365

私が会社・自宅で使っているExcelのバージョンは、Microsoft365というものだ。


これは、更新料を定期的に支払うことで、いつも最新版の機能アップデートが受けられるサブスクだ。
またWord・Excel・OutlookなどのOffice系ソフトがまとめて入っている。

このMicrosoft365を使っていれば常に最新になるので、Excelのバージョンについて考える必要がほとんどなくなる。

ただ、世の中はMicrosoft365を使っている会社ばかりでなく、Excelについても色々なバージョンを使っている会社がある。

Microsoft365で提供される最新中の最新の機能を使ってしまったExcelファイルを、そういう会社に送ったら、「送ってもらったExcelファイルが正しく開けないんだけど」と言われるし、配慮が足りないと不興を買うことも場合によってはあり得る。

Microsoft365以外

Microsoft365以外のバージョンというのは、Excel95とかExcel2003とか、西暦年の番号が付いていく。

たとえば2021というバージョンなら、その2021バージョンの機能だけがずっと使えるのであって、そこに機能アップデートを受けていくことができない。

その代わり、定期的な更新料を払う必要がない、買い切りであるというメリットがある。

誰もが最新中の最新の機能を必要としているわけではないし、Microsoft365以外のバージョンを使っている会社も多い。

そういう会社に対して、最新機能に飛びついて使いまくったExcelファイルを送るようなことを、しないようにしたい。

要領よく押さえておくべき事項

Excelのバージョンは細かいのが色々とあるが、要領よく押さえておくべきことは、

  • Excel2003バージョンでは使えない、それ以降の新しい関数や機能
  • 新機能の中でも特に最近のものなので、外部向けに送るExcelファイルにおいて使用するのは控えた方が良さそうな関数や機能

といった事項になると思う。

Excelファイルの拡張子

拡張子とは、ファイルの種類を識別するために使われるファイルの末尾にある「ピリオド(ドット)で区切られた右側の英数字1~4文字」というものだ。

サンプル.xlsx
というファイルなら、xlsx の部分が拡張子だ。

「Excel2003バージョンでは使えない関数や機能」をまず押さえておくべき理由は、この拡張子そのものが違うケースだからだ。

Excelファイルにも様々な拡張子があるが、主に押さえておくべきなのはxlsxlsxxlsmの3種類だ。

古い拡張子xls

拡張子xlsは、Excel2003までの古い形式。

  • マクロが有るExcelファイルと、マクロが無いExcelファイルと、両方で使える。
    逆に言うと、拡張子では、マクロが有るのかどうか区別できなくて、危険性のあるマクロが含まれたExcelファイルを事前に判定できないと問題視された。
  • Excel2003までの古い機能・関数だけ使うことを前提にされている。この拡張子xlsのExcelファイルに、Excel2003より新しいバージョンの機能・関数を入れるのは不可能ではないが、その場合は警告が出るしおすすめできない。
  • ファイルサイズは重い。

新しい拡張子xlsx、xlsm

拡張子xlsxxlsmは、Excel2003より後の、新しい形式。

  • ファイル形式が、xmlというプログラミング言語で作られるようになり、ファイルサイズが軽くなった。
  • マクロが無いファイルについては専用の拡張子xlsxが作られ、マクロの有無をある程度事前に判断できるようになった。
  • Excel2003までにはない、新しい機能や関数が使える。

(1)xlsx

最新バージョンまで通用する新しい拡張子。この拡張子のExcelファイルには、マクロを入れられない。

(2)xlsm
最新バージョンまで通用する新しい拡張子。この拡張子のExcelファイルには、マクロを入れられる。ただ実際にマクロが入ってるかどうか、事前に見ただけで分かるわけではない。

Excelのバージョン 拡張子 ファイル
サイズ
マクロ有 マクロ無
古い→Excel2003まで xls
新しい→最新版まで全てのExcelで通用する xlsx
xlsm

以下、Excel2003までの拡張子xlsのことを「古い拡張子」、それ以降の拡張子xlsxxlsmのことを「新しい拡張子」というように、ときどき表記する。

Excelファイルの拡張子を変更して保存するには

  • 新しいExcelブックに拡張子を指定して保存する時
  • 既に保存されているExcelブックを、拡張子を変えて保存する時

は、そのExcelブックを開いている時にショートカットキーF12で「名前を付けて保存」により実施する。

「名前を付けて保存」ダイアログで、「ファイルの種類」にて拡張子を色々と選べるが、使うのは

  • Excelブック(*.xlsx)
  • Excelマクロ有効ブック(*.xlsm)
  • Excelマクロ97-2003ブック(*.xlsm)

の3つと、あと

  • CSV UTF-8(コンマ区切り)(*.csv)

にほぼ限られるだろう。

複数Excelファイルの拡張子を同時に変更するには

そしてこの方法では、当然と言えば当然だが、1つずつのExcelファイルしか拡張子を変更できない。

会社の中に沢山の古い拡張子xlsのExcelファイルがあって、それらをまとめて新しい拡張子に変更してしまいたいと思っても、正攻法ではそれができないので諦めている部署も多いのではないだろうか。

それをやるにはどうしても、マクロを使わなければならない。
過去に、そのマクロについて投稿している。

Excel VBA 複数Excelファイルを2007以降形式に統一できるマクロ 個人用マクロブックに組み込めるよ

新しい拡張子は全てxlsmにすべきか?

拡張子xlsxは、マクロ入りExcelを扱えない唯一の形式だ。
それに対し拡張子xlsmは、最新でなおかつ、マクロが有ろうと無かろうと通用する拡張子なので、全てのExcelファイルをxlsm形式にすれば良いのではという考えもある。

その考えも別に間違いとは言い切れないけど、最近はMicrosoftが、インターネットから入手したファイル内のマクロをブロックするようにしているなど、マクロに危険性もある。

またマクロは、会社で使う場合は他社員に分からない・メンテできないという危険性が常に付きまとう。

マクロを使っていないなら、それを明示する意味で、拡張子xlsxのファイルを使うのが無難ではあるだろう。絶対にそうでなければならない、とまでは言えないけど。

Excel2003までの古い拡張子xlsは根絶して、新しい拡張子xlsxかxlsmに統一すれば良い?

たぶん古い拡張子xlsのままになっているExcelファイルの大半は、Excel2003の時代からずっと使われてきていて、そのままになっているだけだろう。

そういう、意味もなく拡張子xlsのままになっているファイルは、根こそぎ新しい拡張子xlsxxlsmにしてしまうのが良いだろう。

ただ、外部システムなどにおいては、拡張子xlsのファイルしか受け付けないとかいうものも、たまにある。

また、Excel2003までのバージョンが入ったPCしかないという会社も、存在しないと思いたいが無いとは言い切れない。
現に、2014年の話ではあるが私の前職でも、Excel97などという化石バージョンが現役で使われていた。たぶんその会社では今でも、Excel2003とか普通に使われているんじゃないだろうか。

そういった事情がある場合は、古いxls形式のファイルも残しておかなければならないことがある。

こんな時代に今さら、Excel97について語る(1)その前に、前職の愚痴をば。

Excel2003より後のバージョンで追加された要素

Excel2003の次にExcel2007というバージョンが出たが、そのときは拡張子が変わっただけではなく、色々なことがガラッと変わったということを押さえておきたい。

Excel2003は色々と完成度が高かったので、本当にこのExcel2003というのが一つの大きな基準点となっている。


以下では、「Excel2003まで」と「Excel2003より後」に分けて、変わった要素で大きなものを列記していく。

これらの機能を何も考えずに使用して、うかつに古い拡張子xlsで保存すると、警告メッセージに悩まされることになる。

「Excel2003より後」には、Excel2003の直後バージョンである2007には含まれない要素を書いたりもするが、とにかく大まかに、Excel2003を基準点として捉えてもらいたい。

Excelシートの行数・列数

Excelシートの行数・列数は、Excel2003までは縦65,536×横256だった。これは割と、この範囲内にデータを納めるのに支障を来す場合もあった。

それがExcel2003より後は、縦1,048,576×横16,384と大きく増加した。

セル背景色やフォント色に使える色が増えた

Excel2003までは、セル背景色や文字フォント色に使える色は、下図のような限られたもの(カラーパレット)だった。
図形とかなら、もっと様々に違う色を使えたけどね。

新しいバージョンのExcelでは、下図のように一覧に色が増え、さらに「その他の色」で自由に色を作ったり、グラデーションを付けたりして、セル背景色や文字フォント色をかなり自由に変更できるようになった。

ただ、Excel2003までのカラーパレットの色と、ちょうど同じ色を出すのは簡単にはできなくて、これはちょっと残念。

Excel2003までのカラーパレットの色は、分かりやすい色が多いし、互換性を気にしなくて良いから積極的に使いたいのだけどね。

今の新しいExcelで、古い拡張子xlsのままで保存しようとした時、警告メッセージが出て一番面倒なのは、この色のやつだと思う。古い拡張子xlsと互換性がある色だけを使うのは、どうにも難しい。

「テーブル」機能の追加

テーブル」は、Excel2010から本格的に追加された。これで、Excelでデータベース形式を扱う機能が強力になった。

Excel2010以降 「テーブル」機能をフル活用しよう。まずは作ってみる。

メニューバーが「リボン」UIに

Excel2003までは、上部に「編集」とかのメニューバーがあった。

これがExcel2003より後は「リボン」というUIになった。
各種の操作メニューが大きなアイコンで下の方に表示されてくれるのはありがたいが、メニューバーが恋しくなることは多い。

Excel リボンはカスタマイズしまくろう。配置を無理に覚えようとしなくて良い

オートフィルタのフィルタ機能追加

オートフィルタで、複数の選択肢にチェックボックスを入れて選択したり、色で並べ替えとかすることは、Excel2003まではできなかった。

ただこれらの絞り込み機能は、今のバージョンのExcelでも、あまり多用はしないほうが良い。

  • チェックボックスにチェックを入れるやり方は、それら項目を全て1個1個選択する要領の悪いやり方になる。
  • 色(セルの背景色やフォント色)というのはデータベース上は意味を持たない。

という理由からだ。

Excel オートフィルタの簡単検索機能の注意点について

条件付き書式の改良

Excel2003までは、「条件付き書式」機能では単純な色設定とかしかできなかったし、今一つ使いにくかった。

Excel2003より後のバージョンでは、条件付き書式の管理画面が改良された他、「データバー」「カラースケール」「アイコンセット」といった書式設定が新たにできるようになった。私は今一つそれらを使うことはないけど。

Excel 条件付き書式について(1)基本設定など

「スライサー」「スパークライン」などの追加

「スライサー」は、下図の左端のような、項目の絞り込みを視覚的に大きく表示するものだ。テーブルやピボットテーブルで使える。

「スパークライン」は、下図「トレンド」のように、セル内にグラフを表示するもの。

いずれもExcel2003までは使えなかった。

最近の機能:まだ外部向けExcelでは使うのを控えた方が良さそう

PowerQueryとかスピルとかは、Excel2016とか最近のバージョンからの機能だし、昔のExcelのイメージが強い古参Excelユーザにはだいぶ馴染みにくいものだと思う。

まだ今のところは、個人(or社内)だけでの利用に留めておいた方が無難かと思う。

Excel 「スピル」機能について

Excel PowerQueryでExcelファイルを開く~閉じる一般的な流れ

古い形式のExcelファイルでは使えない関数

たとえば条件付きの集計を行うSUMIFS関数は、複数条件を指定して集計できるので、一つの条件しか指定できないSUMIF関数の上位互換と言って良い。

だがExcel2003まではSUMIFS関数は存在せず、SUMIF関数しかなかった。

なので、拡張子xlsのファイルにおいてSUMIFS関数を入れて保存しようとすると、下記のような警告メッセージが出る。

ダイアログの「このブックを保存するときに互換性を確認する」のチェックを外せば、こういう面倒な警告メッセージを出すことなく保存していけるが、あまりおすすめできない。
可能な限り、新しい形式のファイルにして保存すべきだろう。

このようなExcel2003まででは使えない関数のうち、使用機会が多いと思うものは、SUMIFS関数、COUNTIFS関数、IFERROR関数などだと思う。

SUMIFS関数

条件付きの集計を行うSUMIFS関数は最も使用機会が多い関数と言って良いが、Excel2003までは使えなかった。

ではExcel2003までの場合。
条件指定が1つで良い場合ならSUMIF関数で代用できる。
では条件指定が複数ある場合が問題なわけだが、これはSUMPRODUCT関数でどうにか代用できる。

Excel SUMPRODUCT関数とSUMIFS関数 縦横混合の集計を比較してみる

Excel2007以降のSUMIFS関数 ―SUMIF以上だがSUMPRODUCT未満―

COUNTIFS関数

COUNTIFS関数は、複数条件を指定可能で、該当するデータ数をカウントできる関数。


Excel2003までの場合は、条件指定が1つで良い場合ならCOUNTIF関数で代用できる。
条件指定が複数の場合、単独でそれをできる代用関数はない。条件の部分を&演算子で結合してCOUNTIF関数でカウントするとか、力技でやるしかないだろう。

Excel COUNTIF関数とCOUNTIFS関数で条件に合致するデータの件数をカウント

IFERROR関数

IFERROR関数は、計算結果がエラーなら予め指定した別の値を返し、エラーじゃないならその元の計算結果を返すものだ。

Excel2003までの代用手段は、エラーかどうか調べるISERROR関数を、IF関数と組み合わせることになる。

最近の関数:まだ外部向けExcelでは使うのを控えた方が良さそう

Excelの関数もたくさん増えているけど、その中でもバージョンにしてExcel2016以降の関数とかは、まだ外部向けには使用を控えた方が良いのではないかと思う。

また、スピルを前提とした関数も増えていて、それらもまだ使わない方が良いと思う。

それらの中で、特に有用性が高い代表的と思われるものを列記してみた。

関数 機能
IFS IF関数のネストを、1つの関数でできる。
SWITCH 複数の値を検索して、一致した値に組み合わせられた結果を返す。
CONCAT 文字列結合。B2:D2といったセル範囲を指定して、複数の文字列を一度に結合できる。
TEXTJOIN 文字列結合。CONCAT関数の機能に加え、区切り文字も指定して結合できる。
FILTER オートフィルタのようなフィルタリングができる。
SORT 指定した範囲を並べ替える。指定できる並べ替えキーは1つのみ。
SORTBY 指定した範囲を並べ替える。複数の並べ替えキーを指定できる。
UNIQUE 重複しないデータを返す
XLOOKUP 検索値を範囲から検索して、値を返す。縦横いずれの検索も可能で、エラーだったときの返り値も指定できる。VLOOKUP・HLOOKUPやINDEX+MATCHなど全ての機能を兼ね備える上位互換。
XMATCH 指定した項目を検索し、一致した位置を返す。MATCH関数の強化版。MATCH関数はデフォルトが「○以下」検索だが、XMATCHのデフォルトは完全一致検索。
RANDARRAY 乱数の配列を返す。
SEQUENCE 連番など、一定規則で連続する数値の配列を、縦横に作成する。
LET 変数を数式に組み込める
LAMBDA オリジナルの新しい数式・関数を作成できる。
TAKE 配列(セル範囲)から、3行・4列など指定したものを返す。
DROP 配列(セル範囲)から、先頭の5行・1列など指定した範囲を削除したものを返す。
CHOOSEROWS 配列(セル範囲)から、3行目・5行目・8行目など指定した行範囲を返す。
CHOOSECOLS 配列(セル範囲)から、2列目・3列目・5列目など指定した列範囲を返す。
EXPAND 配列(セル範囲)を、10行・7列など指定したサイズに直す。
VSTACK 配列(セル範囲)を、縦方向に連結する。
HSTACK 配列(セル範囲)を、横方向に連結する。
WRAPCOLS 縦1列か横1行の配列(セル範囲)を、2行とか指定した行数に直す。横の列数はそれに対応して自動計算。
WRAPROWS 縦1列か横1行の配列(セル範囲)を、4列とか指定した列数に直す。縦の行数はそれに対応して自動計算。
TOROW 配列(セル範囲)を、横1行に直す。
TOCOL 配列(セル範囲)を、縦1列に直す。
TEXTSPLIT 指定した文字列を、区切り記号の出現ごとに、横(縦もある)方向に分割したスピルを実施する。
TEXTBEFORE 指定した文字列に対し、区切り記号の前の文字を返す。
TEXTAFTER 指定した文字列に対し、区切り記号の後の文字を返す。

Excel(Microsoft365)2022/08新規追加された関数(2)文字列操作系の関数

Excel(Microsoft365)2022/08新規追加された関数(1)配列操作系の関数

スポンサーリンク