【Microsoft Excel】フラッシュフィルって何?どこまでできる?

Microsoft Excelにあるフラッシュフィルという機能をご存じですか?

あまり目立たないところにあるので、存在自体を知らない方もいるかもしれません。

マイナーな機能ですが、状況によっては便利なこともあるので解説してみます。

フラッシュフィルとは何か?

まず、Microsoft社のサポートページにある機能説明を見てみましょう。

フラッシュフィル機能は、法則性を検知するとデータを自動的に入力します。 たとえば、フラッシュフィルを使用して、1つの列から姓と名を切り離したり、2つの列から姓と名を結合したりできます。

Excel でフラッシュ フィルを使用する - Microsoft サポート

入力されたデータの規則性を見つけ出し、それに基づいてデータを自動的に入力する機能です。
具体例を見れば一目瞭然なので見てみましょう。

氏名が入力されたセルから、氏(名字)のみを取り出してみます。
以下のデータを使用します。

使用するデータ

まず、Excelが規則性を発見できるようにするため、最初のデータについては自分で入力します。

最初の1行を入力した状態

自分で入力した最初のデータを含めて、データを入力したいセルを選択します。

入力するセルを選択した状態

「ホーム」タブ→「フィル」→「フラッシュフィル」を選択します。

「ホーム」タブ→「フィル」→「フラッシュフィル」を選択

データが入力されました。

「フラッシュフィル」押下後の状態

基本的な使い方は上記の通りです。

使い方、手順についてはこれ以上覚えるべきことはありません。

フラッシュフィルを使ったことがない方は、上記の手順を早速実践してみて、感触をつかんでいただければと思います。

お疲れ様でした。

・・・

これで記事が終わると寂しいので、もう少し続けます。

どんなパターンなら検知できるのか

上で紹介した手順は、氏名のうち氏(名字)を抜き出すというものでした。
これが実現できるのは、氏名の間にスペースが入っているため、Excelが「スペースより前の文字を抜き出す」という規則性を適用したためです。

では、どんなパターンであればExcelが規則性を検知できるのでしょうか?

いろいろ実験をしてみたので整理してみます。

ここから先に記載するパターンは、すべてを網羅できているわけではありません。
気になるパターンがある方はご自身で実験してみてください。

検知できるパターン

①〇〇文字目を抽出する

区切り文字がなかったとしても、2文字目を抽出するとか、4文字目を抽出するといったような、特定の位置にある文字を抜き出すパターンは検知できるようです。

〇〇文字目を抽出する例

②〇〇文字目~××文字目を抽出する

1と似たパターンですが、特定の位置にある複数文字を検知することも可能です。

〇〇文字目~××文字目を抽出する例

③〇〇文字目と××文字目を抽出する。

1や2と似ているパターンが続きます。特定の位置にある文字であれば、それがとびとびにあったとしても検知できます。

〇〇文字目と××文字目を抽出する例

④固定文字列を付与する

入力済みのセルに対して、固定文字列を付与することも可能です。

固定文字列を付与する例

⑤複数のセルの内容を統合する

複数のセルの内容を統合することも可能です。
Microsoftのサポートページにもある「2つの列から姓と名を結合」のパターンもこれに該当します。

複数のセルを統合する例

まとめると、

  • 〇〇文字目といった特定の位置にある文字列を抜き出す
  • 区切り位置をもとに、その前(または、後)を抜き出す
  • 固定文言を付与する
  • 複数のセルの内容を統合する

といったパターンは対応できるようです。

検知できないパターン

では逆に、検知できないパターンを見ていきましょう。

①数値の演算結果を入力する

入力された数値に対して特定の演算(足し算や引き算など)を行った結果を入力することはできません。

以下の例では、左のセルに1を足した値を入力しようとしましたが、できませんでした。

数値の演算結果を入力する例

②区切り文字のない状態での氏名の分離

フラッシュフィルとは何か?」の例で氏名の分離をしましたが、元データの氏名の間にはスペースが入っていました。

スペースがない状態で氏名を分離しようとしても、正しく分離することはできません。

スペースがないと、「検知できるパターン」にある「①〇〇文字目を抽出する」という規則性が適用されてしまい、1行目とは異なる文字数の名字があると、氏名の間ではない位置で文字列が分離されることになります。

数値の演算結果を入力する例

「森四郎」「五十嵐五郎」は、それぞれ「森」「五十嵐」が名字ですが、正しく分離できていません。

まとめると、

  • 数値の演算
  • 入力された内容の意味(氏名、等)に基づく分離

は検知できないようです。

ざっと、思いつくものを実験してみましたが、いかがでしょうか?
気になるパターンがある方はぜひ自分でも試してみてください。

結局この機能は使えるのか?

結論としては、活用できるケースはそんなに多くないと思います。

関数やマクロを使いこなせる方であれば、あえてフラッシュフィルを使用しなくても同様のことが実現できるので、絶対に覚えないといけない機能ではありません。

逆に関数やマクロに馴染みがない方であれば、(スペースで区切られた)氏名を分離したり、複数セルの内容を1つのセルにまとめたりするのに活用できるのではないでしょうか。

操作が直感的にできるのはこの機能のメリットだと思うので、こんな機能もあったなぁと覚えておくぐらいがちょうどよいと思います。