フィルターしたい文字の検索

次のようなデータがあったとします。特定の列を、特定のデータだけで絞り込むには、オートフィルタが便利です。多くのExcelユーザーが愛用しているこのオートフィルターも、Excel 2010では拡張されました。



たとえば「住所」のオートフィルタ矢印ボタンをクリックすると、次のようなリストが表示されます。



[検索]というボックスが追加されています。ここに、任意の文字列を入力することで、下のリストに表示される候補を絞り込めるようになりました。




上図は"東京"で絞り込んだ結果です。[検索]ボックスに文字列を入力すると、基本的には「部分一致」と認識されるようです。たとえば、[検索]ボックスに"中"と入力すると、"中"を含む候補が表示されます。



そのまま[OK]ボタンをクリックすれば、フィルタが完了します。簡単になりましたね。




「名前」列を使って、もう少し詳細に見てみましょう。先に書いた通り、[検索]ボックスは基本的に「部分一致」と認識されます。では「○で始まる」や「×で終わる」と指定するには、どうしたらいいのでしょう。そんなときはワイルドカードを使います。「え?ワイルドカードって何?」という人は、自分で調べてください。ネットで検索すれば解説しているサイトが見つかるはずです。


ただ"田"だけを入力すると、これは「田を含む」と認識されます。

 
「田で始まる」と指定するには"田*"と入力します。
 

 
同様に「田で終わる」でしたら"*田"です。
 

 
「3文字の名前で、2文字目が田」は、"?田?"とします。
 

 
この[検索]ボックスは、数値を絞り込むことも可能です。
 

 
もちろん数値でも、ワイルドカードを使えます。
 

 
今までの[テキストフィルター]-[特定の値を含む]と似た機能ですので、これを多用していたユーザーには朗報でしょう。
 

 

 
ただし、数値データを対象にした[数値フィルター]では[特定の値を含む]が使えませんでしたので、数値を文字列のように絞り込むには、今回追加された[検索]ボックスが便利ですね。
 

 
この[検索]ボックスは、オートフィルタだけでなく、テーブルとピボットテーブルでも使用できます。
 
*や?を検索するには
 
データの中に「*」や「?」が含まれていて、これらの文字で絞り込むにはどうしたらいいでしょう。
 

 
普通に"*"や"?"を入力すると、ワイルドカードと認識されてしまいます。
 

 
Excelではこんなとき「~(チルダ)」を付けて指定します。これは、セルの検索や置換でも使えるテクニックです。
 

 
○○からを意味する「~」ではなく、半角の「~」です。「先頭から2文字目が"?"」は、"?~?*"とします。
 

 
最初の「?」はワイルドカードで、任意の1文字を表しています。次の「~?」は"?"という文字を指定したことになり、最後の「*」が「その後ろはどんな文字が何文字でも可」という意味になります。
 
ちょっとした不満
 
この機能、けっこう便利だと思います。できれば、正規表現とかAnd/Or指定ができたら、さらに強力だと思いますけど。
ただ、使っていて、ほんのちょっとだけ不満に感じた部分があります。Excel 2007から、オートフィルタで絞り込んでいるとき、オートフィルタ矢印ボタンにマウスポインタを合わせると、どんな条件で絞り込んでいるかがポップアップされるようになりました。
 

 
では、今回追加された[検索]ボックスを使って、「住所」が「中を含む」で絞り込んでみましょう。
 

 
ポップアップには「"横浜市中区, 東京都中央区, 東京都中野区"に等しい」条件で絞り込まれていると表示されます。確かにその通りなんですけど、私は「中を含む」で絞り込んだんです。少なくとも、そう意識して、それを目的に操作しました。確かに、その結果はポップアップされている通りなのですが、このポップアップ表示から、私が意図した「中を含む」という条件を導くことは難しいでしょう。
 
ええ、わかっています。今回の[検索]ボックス機能は、候補を絞り込むための機能で、ワークシート上のリストを直接絞り込むための機能ではありません。ですから、仕様的に間違っていないと理解しています。間違ってはいませんが、ユーザーとしては「中を含む」で絞り込んだという経緯を、どこかで確認したいです。たとえば、もう一度オートフィルタ矢印ボタンをクリックしたら、前回の[検索]ボックスが残っているとか。
 
今のままでも十分満足ですが、強いて不満をあげるのなら、そこんとこ、どうにかできませんかね?って感じです。

ダウンロードしたブックには警告が出ます

Excel 2010では、Webサイトからダウンロードしたファイルや、メールに添付されてきたファイルを開くとき、警告が出るようになりました。




[編集を有効にする]ボタンをクリックしないと、このブックを編集できません。

ちょっと気になるのですが、この状態ではリボンが表示されません。もしかしたら、テクニカルプレビュー版だからでしょうか。ただし、別にリボンが使えないわけではなく、ただ隠れているだけです。Ctrl+F1キーを押すと、リボンが表示されます。




リボンを表示してみると、ほとんどのボタンが操作不能になっています。よく見ると、この警告には[保護されたビュー]の文字が。なるほど、ユーザーが編集を有効にするまでは、保護しているんですね。あと、もうひとつ気になったのですが、このようにダウンロードしたファイルを開くとき、一瞬Excel 2010のロゴ画面が表示されます。起動するときに表示されるアレです。もしかして、Excelをもうひとつ起動しているのでしょうか。




ビンゴですね。プロセスをチェックしてみると、コマンドラインに「/Embedding」が付いています。




ダウンロードしたファイルを開くときは、もうひとつのExcelを、内部でいわゆるビュワーとして起動し、まずそのビュワーで表示してくれるようです。ビュワーで表示しているだけですから、もちろん自動実行マクロなどは起動しません。確認しましたが、VBEのプロジェクトエクスプローラにも存在しませんでした。

[編集を有効にする]ボタンをクリックすると、このビュワーが終了し、本来のExcelで読み込まれます。




開くブックにマクロが含まれているときは、この後でマクロを無効にした旨の警告が表示されます。

ダウンロードしたファイルを開くとき[編集を有効にする]ボタンをクリックすると、Excel 2010は、そのファイルを記憶して、次回開くときには確認を出しません。このへんの仕組みは、マクロ入りブックを開くときの動作と同じです。詳しくは「2回目からはマクロの警告しません」を、ご覧ください。

なぜダウンロードされたファイルだと分かるのか

ちょっと、Excel 2010の話とは違いますが、開こうとしたファイルがダウンロードされたものだと、なぜ分かるのでしょうか。そういえば、Excelで開くときに限らず、ネットからダウンロードしたファイルを開こうとすると、よく次のようなメッセージが表示されます。




Excelではなく、Windowsのレベルで、そのファイルがダウンロードされたものだと認識しているようです。この仕組みは、Windows XPのSP2で追加されました。WebにあるファイルをIEでダウンロードしたり、メールの添付として送られてきたファイルなどには「ZoneId」という印が付けられます。エクスプローラなどでファイルを開くとき、そのファイルに「ZoneId」が記されていたら、上のような警告が表示されます。

この印は、ダウンロードしたファイルの「Zone.Identifier」という名前のストリームに書き込まれます。書き込まれる値は

[ZoneTransfer]
ZoneId=3

です。3がWebを表す数値らしいですが、ネットで検索したところ、他の数値は記録されないらしいです。とにかく、このストリームに「ZoneId」が記されていたら、開くときに警告が表示されるわけです。なお、NTFSのストリームに関しては「NTFSのストリームを利用する」を、ご覧ください。

「ZoneId」が記録されているかどうかは、ファイルのプロパティで確認することもできます。エクスプローラなどからファイルのプロパティを開いて、一番下に「このファイルは他のコンピュータから~」と書かれていたら、それはダウンロードしたファイルです。




その右にある[ブロックの解除]ボタンをクリックすると、ファイルのZone.Identifierストリームに記録された「ZoneId」が削除されます。もちろん「ZoneId」を削除してしまえば、ファイルを開くときの確認や警告は表示されなくなります。