こんな時代に今さら、Excel97について語る(2)今では当たり前の機能も、改善を重ねた結果のものだ

Microsoft Excel

スポンサーリンク

前回の記事で、Excel97の話から始まって色々と私の前職についての愚痴を書き連ねた。
さて今回は本題に入って、今のExcelでなら当たり前にできるこんな機能もExcel97ではできなかったんだという事例を、色々と書いていく。

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

シート見出しの色を変更できない

今のExcelでは当たり前のようにやっているシート見出しの色の変更だけど、これは実はExcel97ではできなかった。
地味に不便です。

Excel VBA シートの見出し色を他のシートからコピーするマクロ 個人用マクロブックに組み込める

検索機能で「ブック」全体を対象にすることができない

Excelの検索機能では、オプションで検索場所を「シート」「ブック」から選択でき、「ブック」を選択すればブック全体を対象に検索するわけだ。
でもこれは、Excel97ではできなかった。

ブック全体を対象に検索したければ、シートを全て選択した上でやるしかなかったのだ。
まあこれは、大した不便でもない・・・かな?

Excelの検索と置換の機能について

オートフィルタを設定した場合、列の削除ができなくなる

例えば上図の表ではオートフィルタが設定してあって、B列・C列の情報がいらないと思ったらそれらの列を削除する(ショートカットキーは Ctrl + 「-」キー )なんていうのは、当然にやることだ。

しかしExcel97では、オートフィルタが設定された状態では、これらの列を削除するといったことはできなかったのだ。やろうとすると、エラーメッセージを返された。

列を削除したければ、オートフィルタの設定はいちいち解除しなければならなかった。
これも慣れるまでに(そもそも慣れさせられる環境がおかしいのだが)時間がかかって面倒だった。

オートフィルタの機能から昇順・降順並べ替えができない

Excel表の並べ替えをするとき、多くの人がそうだと思うが私も専ら、まずオートフィルターを設定して、そのメニューから出る「昇順」「降順」ボタンをクリックすることで実行する(※1)。

実はこれは、Excel97ではできなかった。
Excel2010以降の「データ」タブに昇順・降順並べ替えの専用ボタンがあるけど、これを押すのと同様、専用の昇順・降順並べ替えコマンドを実行することでしか、Excel97での並べ替えはできなかったのだ

(※1)この手順は正確に言うとショートカットキーを駆使してやるべきで、Excel2010以降では
表の見出し部分をクリック → Altボタンを押す → 方向キーの下キーを押す → 昇順ならSキー、降順ならOキーを押す

という方法でやるようにしよう。

Excel オートフィルタ関係 難しいがかなり役立つコマンド

リスト形式の入力規則は、ウインドウ枠の固定をすると機能しなくなることがある

たとえば下図の例では、課の名称を「営業1課,営業2課,営業3課,営業4課」からのみ選んで入力させるように、Excelの「入力規則」機能を使って設定している。


これは「入力値の種類」に「リスト」を設定してからやる機能で、当然これができなければ給料泥棒だ。
前の会社の人達はExcelなんてクソ食らえだったから、できなかったけどね。

さて、この入力規則を設定したら、最上部の「部門CD」「部門名」といった見出しの部分は「ウインドウ枠の固定」機能により固定するところだ。

Excel 「ウインドウ枠の固定」で気配りしよう。手間を掛けないように。

しかしExcel97では、この「リスト」による入力規則を設定した上で「ウインドウ枠の固定」機能も一緒に設定すると、本来この入力規則を設定したら出てくるはずのドロップダウンリストが表示されなくなることがある

いや、今どきのバージョンのExcelでもこれと似たような事例が発生しないこともないようなのだが、Excel97の場合はこれがだいぶ頻繁に発生するので、結構タチが悪かった。

私も色々とケースを変えて試してみたが、このバグが発生する・しない事例の明確な法則性を見つけきることはできなかった。
まあ見つけきる前に前職を辞め、それ以来Excel97なんて触っていないのだけど。

シートのコピーを30回ぐらい行うとエラーになる

これはちょっと面白い題材だ。
「シートのコピーを30回ぐらい行うとエラーになる」というのを聞いても分かりにくいだろう。

「1つのブック中のシート数が30枚以上になると多すぎてエラーになる」という意味だと思われるかもしれないが、そうではないのだ。

ブックの中に「1日」シートだけが存在するとしよう。そして、文字だけでは分かりにくいかもしれないが

1日」シートをコピーして「2日」シートを作り、用済みの「1日」シートは削除する。
2日」シートをコピーして「3日」シートを作り、用済みの「2日」シートは削除する。
3日」シートをコピーして「4日」シートを作り、用済みの「3日」シートは削除する。
・・・・・・・・

という作業を繰り返して、

30日」シートをコピーして「31日」シートを作り、用済みの「30日」シートは削除する。

というところまで行ったとすると、その辺りでエラーになるということだ。

この作業では、用済みのシートは削除して常にブックの中のシート数は1枚だけに保っているし、シート名も何ら問題ないのだけれど、それでもエラーになってしまうのだ。

このエラーの原因は、はっきり言って一般ユーザには絶対分からないし、マクロをやってる人にとってもマニアックレベルだ。私も必死にググったりしてようやく分かった。

エラーの原因

ではこのエラーの原因説明に入ろう。以前の記事でちょっと関連事項を記述しているのだが、Excelではシート名を「売上」など自分であれこれ設定しても、内部的には「Sheet1」といった名前が別に設定されている。

Excel VBA シートWorksheetsを指定するコーディング方法について

だから、上記事例の最初に存在した「1月」シートには「Sheet1」という内部名称が設定されているわけだ。では「1月」シートをコピーして作った「2月」シートの内部名称はどうなるか。

そんなの「Sheet2」になるに決まってるだろ、と思われるだろうし、実際97より新しいバージョンのExcelならそうなる。
しかしExcel97では、内部名称「Sheet1」のシートをコピーしたら、コピー後シートの内部名称は「Sheet11」になる。

これでもまだ大した事なさそうだが、内部名称「Sheet11」の次は「Sheet111」となる。
・・・だいぶ雲行きが怪しくなってきた。

もう予想がつくと思うが、これを繰り返していると、内部名称が「Sheet111111111111111111111111111111」といった具合にめちゃくちゃ長くなっていき、内部で処理しきれなくなってエラーになってしまうのだ。

Excel97が世間で現役の当時、いかにExcelがリリースされて時間があまり経っていなかったとはいえ、これぐらいのことは開発時に予想がつかなかったものかなと思う。
また実際に使っているユーザ達から、この件で問い合わせとか頻発しなかったのだろうか。

このくらいのシートコピーの処理は、私でなくてもいろいろな人が普通にやりまくる事だと思うのだが。

このエラーの対策としては、シートをコピーするのではなく新規挿入すれば良いのだけどね。
でもそれだとページ設定など各種設定をやり直さなければいけなくなってしまうので、極力避けたい。
でもそうも言ってばかりいられなかった。

終わりに

ここまで、Excel97の頃にできなかった事柄の意外な事例を挙げてみた。
細かいものまで含めれば他にも色々とあったかもしれないが、私もこうやってブログに書くことを当時想定していたわけでもないし、強く印象に残っていたのが上記に挙げたような事例だ。

シート見出しの色設定など、今どきのExcelでなら当然にできている事でも、Excel97の当時はできなかったりした。今では常識となっているような機能でも、それはユーザやMicrosoftの開発者たちが様々な試行錯誤を重ねた結果だと分かる。

前職でExcel97を使わされる羽目になったのだけど、その直前までの仕事ではExcel2003を支給され使っていた。だけどExcel2003と比べても97はやっぱり、明らかに機能不足が多かった。あんなExcel97ばかり使わされているような環境のままだったら、こんなExcelについて取り上げるブログなんて書きようもなかったというものだ。

そして前職を辞めて今の仕事に就いたら、今度はExcel2013を使わせてもらえることになり、ガラッと自由度が高くなって逆に戸惑ったりしたものだ。まぁ私は家庭のパソコンでExcel2010を普通に使ってたし、そういうプラスの意味での環境の変化にはすぐ順応できて、程なく色々な機能をガンガン使いこなしていったけどね。

スポンサーリンク