住所処理に便利、キー一発でExcelのセル内容を自動的に分割/結合Tech TIPS

Excelで住所などの処理を行う際、複数のセルに分かれた住所を1つのセルにまとめたりすることなどがあるだろう。大きな表では意外と面倒な作業だが、Excelのフラッシュフィル機能を使うと簡単に自動的に結合が行える。その方法を紹介しよう。

» 2019年09月30日 05時00分 公開
[塩田紳二]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Tech TIPS」のインデックス

連載目次

対象:Excel 2013/2016


フラッシュフィルの例 フラッシュフィルの例
どのような大きな表でも「例示」を作るだけで同様の作業を自動でやってくれる。複数のセルをまとめる、セルから一部を取り出すなど、ちょっとした編集作業なら、フラッシュフィルによって自動化できる。

 他人の作成したデータをCSVファイルなどで受け取って、「Microsoft Excel」で処理する場合、必要な情報が複数のセルにまたがっていたり、複数の情報が1つのセルに入っていたりすることはないだろうか。そのような場合、セル内容を複数のセルに分割したり、複数セルの内容を1つのセルに統合したり、しなければならないことがある。

 手作業では、間違いが入る可能性があるため、式を使って処理している人も多いかもしれない。しかし、式の作成は、少々面倒で難しい場合も多い。場合によっては、式で処理できず、やっぱり最後は手作業で処理するということもあるだろう。

 こうしたとき、Excelの「フラッシュフィル(Flash Fill)」機能を使うと、ユーザーが例示したセルの分割や統合から、Excelが残りの部分を推測してセルを埋めてくれる。フラッシュフィルは、結果を式ではなく、値としてセルに書き込むため、そのままCSVとして保存することも可能だ。このフラッシュフィルの使い方を紹介しよう。

フラッシュフィルとは?

 フラッシュフィルとは、「例示」からルールを推測して、同じルールを残りの空白セルに適用するExcelの機能だ。Excel 2013から搭載されているが、知名度としてはイマイチな機能だ。しかし、その背後では、かなり高度な処理が行われている。開発はマイクロソフトの研究所であるMicrosoft Researchで行われ、以下のように論文やBlogでも取り上げられている。

 フラッシュフィルは、[ホーム]タブの[編集]−[フィル]のドロップダウンリストで[フラッシュフィル]を選択するか、[データタブ]−[データツール]の[フラッシュフィル]を選択することで呼び出せる。また、キーボードショートカットを使って、[Ctrl]+[E]キーで起動することも可能だ。

 フラッシュフィルでは、アクティブセルの左右に隣接するセルの値と、上にある「例示セル」を比較して、選択範囲に入るべき内容を作る。

 例えば、下画面のような表の場合、フラッシュフィルはアクティブセルの上にある「例示セル」の内容から、「左側2つのセルの内容を合成する」ものだと推測して選択範囲に値を入れる。幾つかの制約条件はあるが、普通のExcelの表であれば、問題がない範囲のものだ。

フラッシュフィルで2つのセルの内容をまとめる フラッシュフィルで2つのセルの内容をまとめる
2つのセルの内容を1つにまとめたセルを作りたければ、2つのセルの横に例示となるセルを入力すれば、Excelがそのパターンを調べて、同じ作業を繰り返してくれるのがフラッシュフィルだ。表入力が劇的に楽になる。

 Excelは、フラッシュフィルが利用可能な場合に、ポップアップでフラッシュフィルが利用可能であることを示す。しかし、ポップアップの出現条件は少々複雑で、ユーザーが直接セル内容を入力した後、フラッシュフィルが利用できそうならポップアップが出現するが、クリップボードから貼り付けたような場合には出現しない。このため、利用中にいつでも表示されるとは限らない。

フラッシュフィルのポップアップ フラッシュフィルのポップアップ
ユーザーの入力中にフラッシュフィルが使えそうな場合には、ポップアップで結果を見せてくれる。ただし、例示セル部分をユーザーが直接入力した場合のみポップアップが表示される。

 また、このポップアップは、入力の推測と同じく、セル入力の途中で行われるため、ユーザーが入力を始めてしまうとポップアップは消えてしまう。入力を急いでいるようなときに「一瞬だけ何かが表示されたけどすぐに消えた」となったしまうことが結構ある。

 そのため、この機能は「意図的」に使うのが便利だ。[Ctrl]+[E]キーを押せば、その時点でフラッシュフィルが「発動」される。

 フラッシュフィルを起動したあと、アクティブセルの右側にメニューアイコンが表示され、クリックするとフラッシュフィルの取り消しやフラッシュフィルが追記したセルの選択などの作業が行える。期待通りの結果にならなくても、慌てずにこのメニューから「フラッシュフィルを元に戻す」を選べばよい。

フラッシュフィルの実行後に表示されるメニュー フラッシュフィルの実行後に表示されるメニュー
フラッシュフィルを実行すると、アクティブセル位置は変わらず、横にメニューアイコンが表示される。ここからフラッシュフィルの取り消しや、入力したセルの選択などが可能だ。

フラッシュフィルの使い方を具体例で見てみよう

 具体例で試してみよう。例えば、CSVでもらった住所データが、郵便番号、都道府県、市町村と別々のセルになっていたとしよう。具体的には、郵便番号リストとして日本郵便が配布しているCSVファイルなどがこの形式になっている。

複数のセルに分かれた住所を1つのセルにまとめる

 1つのセルに郵便番号や住所をまとめて入れたいという場合、空の列を挿入した後、最初の1行だけコピー&ペーストを使って例示セルを作る。

全国の郵便番号のリストの住所を1つのセルにまとめてみる 全国の郵便番号のリストの住所を1つのセルにまとめてみる
日本郵便が配布している全国の郵便番号のリスト(読み仮名データの促音・拗音(ようおん)を小書きで表記するものの「全国一括」)では、郵便番号や都道府県、市町村などが別々のセルに入っている。このようなとき、フラッシュフィルを使えば、表がどれだけ大きくてもキー1つで表の残りの部分を埋めてくれる。

 今回は、郵便番号の頭に「〒」(郵便)マークを入れ、郵便番号と市区町村の後ろに半角スペースを入れた。これで2行目にアクティブセルを置き、[Ctrl]+[E]キーを押せば、例示通り、「〒+郵便番号+" "+都道府県+市区町村+" "+町名」を統合したセルが値(文字列)として最後まで入力される。

 同等の作業は、1行目に式「="〒"&C1&" "&G1&H1&" "&I1」を入れ、フィルハンドルで表の最後までドラッグすれば可能だが、フラッシュフィルに比べるとかなり面倒だ。表が非常に大きい場合には、計算式が多数になるため、ハードウェアによっては再計算の時間を取られることがある。

セルの内容を分割する

 逆にセル内容を分割してみよう。セルにハイフンなどで区切って数値の範囲が指定されているとしよう。ここでは、開始周波数範囲と終了周波数(単位はMHz)が記述されている場合を例に使い方を解説する。このとき、開始周波数と終了周波数を別々のセルに入れたい場合には、それぞれ例示セルを作り、2行目にアクティブセルを置き、[Ctrl]+[E]キーを押せば、フラッシュフィルがセル内容を分割してセルに入れてくれる。

セルの内容を分割する セルの内容を分割する
フラッシュフィルは、セルから部分的に文字列を取り出すこともできる。このため、複数セルでフラッシュフィルを使うことで、1つのセルを複数セルに分割することも可能だ。

 [Ctrl]+[E]キーでフラッシュフィルを使うときには、選択セルは1つだけの状態とする(複数セルを選択しているときに[Ctrl]+[E]キーでフラッシュフィルを起動することはできない)。また、分割の場合、例示セルはアクティブセルの上だけにあればよく、この例では、開始周波数でフラッシュフィルを使うのに終了周波数側は例示セルなどを入れる必要はない。

セルから単位などを取り除く

 セルからの情報抽出にもフラッシュフィルは利用できる。単位が付いた数値が入ったセル内容から単位を取って数値のみにするといった用途にフラッシュフィルが利用できる。これは、CSVの読み込みや、外部の文書などからコピーしてきたデータなどにありがちな処理だ。

 Excelは、数値に対する処理には非常に柔軟に対応できるが、数値に単位などが付いていると文字列と見なされてしまい、書式指定や計算処理が行えない。もちろん、置換処理などで特定の文字列を消すことも可能だが、フラッシュフィルでは、例示セルを作れば、残りのセルは[Ctrl]+[E]キー一発で処理が可能だ。前述の「開始-終了周波数」などの例で、単位(MHz)を例示セルに入れなければ数値からなるセルをフラッシュフィルは埋めてくれる。数字だけのセルにすれば、あとから書式指定などを行うことも可能になる。

セルデータの書式化を行う

 この応用例として、セルデータの書式化にも応用できる。Excelは、数値の書式化は得意だが、文字列を書式化しようとするとLEFT/MID/RIGHT関数を使うなどして文字列を切り出す必要があって面倒だ。しかし、フラッシュフィルは、セルの文字列から一部を取り出し、固定した文字列と組み合わせるといった処理が簡単に行える。

フラッシュフィルによるセルデータの書式化も可能 フラッシュフィルによるセルデータの書式化も可能
Excelは数値の書式化には柔軟に対応できるが、文字列の書式化はあまり得意ではない。しかし、フラッシュフィルを使うことで、文字列処理の数式などを使わずにセルから部分的に文字列を取り出して書式化した文字列を作り出すことができる。

フラッシュフィルにできること/できないこと

 フラッシュフィルは以下のようなパターンに対応できる。

  • 複数セルの結合
  • 固定文字列の挿入
  • 固定位置から始まる固定文字数の文字列を取り出す
  • 特定の文字で区切られた文字列を取り出す
  • アルファベットの大文字小文字の変換
  • 上記の組み合わせ

 こうした処理は、前述の住所の結合や数値範囲の分割など比較的よく使われる処理だ。電話番号や郵便番号といった固定的な書式設定やその逆もよく行う処理である。フラッシュフィルはこうしたパターンには対応できる。

 一方、半角アルファベットでは、大文字小文字の変換は可能だが、日本語の平仮名、片仮名などの変換はできないようだ。これらのパターンを組み合わせてもフラッシュフィルは動作するが完璧ではない。

 多数のパターンを複雑に組み合わせると、例示セルのパターンの解釈が複数可能になり、その選択を間違って、期待通りに動かないこともある。こうした場合、例示セルを複数作ることで、処理パターンの解釈を限定させ、正しい動作を行わせることも可能だ。

 また、フラッシュフィルは列を埋めるように働き、行を埋めるようには働かない。このため、例示パターンはアクティブセルの上にあることが期待されている。一度に処理できるのは1つの列のみで、複数列を同時処理させることができない。

フラッシュフィルは列に対しての動作のみ対応 フラッシュフィルは列に対しての動作のみ対応
フラッシュフィルは、列に対して動作する(つまり縦方向にセルを埋める)。しかし、横方向にはセルを埋めてくれず、必要な元情報も同一行に置かれている必要がある。

 さらに元になるデータセルは、同一行にあるものに限られ、上下のセルにある値を使うことはできず、行がずれている処理にも対応できない。ただし、フラッシュフィルの結果は文字列や数値など式ではないので、あとで空白セルを挿入するなどすれば、行をずらすことは可能だ。また、動作範囲としては、Excelの表、つまり、空白セルで区切られた領域を対象にする。

フラッシュフィルは例示セルの作成が成功の秘訣(ひけつ)

 フラッシュフィルは、セルに入っているデータの意味を見ているわけではなく、あくまでも機械的に行える処理パターンを推定して処理を行っている。そのため、人間が知的な判断を行わねばならないような処理はできない。

 例えば、空白を含まない住所を都道府県や市町村で分割するといった処理はできない。前述の郵便番号データから合成して作った住所から都道府県を分離させようとした場合、リストの最初にある北海道だけを例示するとうまくいかないが、2つ目の例示として「県」を含むセルを作ると、一見うまくいったようにみえる。しかし、「神奈川県」の切り出しには失敗して「神奈川」を切り出してしまう(県名のうち、神奈川、和歌山、鹿児島の3県が4文字)。

 アルファベットだと、空白や記号文字で分割することはできる。だが、日本語の場合、単独の特定文字位置での文字列切り出しは可能だが、複数の特定文字での文字列切り出しがうまくいかないことがある。

 おそらくフラッシュフィルは、例示セルから「先頭から3文字で分割」とパターンを認識しているからだ。それではと、例示に神奈川県を含めるようにすると、今度はフラッシュフィルが正しくない結果を出してしまう。

 これに対して、都道府県名のあとに空白文字があると日本語であってもうまく分割ができる。「都道府県」のような複数の文字のどれかで区切られているというルールには対応できないが、特定文字1つ(この場合は空白)で区切られているというルールは検出が可能なのだと思われる。


 フラッシュフィルは、[Ctrl]+[E]キーで簡単に起動でき、多くのセル分割や結合に利用できる。数式入力とフィルハンドルのドラッグを合わせて自動化しているような処理ならば、ほぼフラッシュフィルで代替可能なので、覚えておくと、作業効率が格段に上がるはずだ。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。