Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

【Excel】条件付き書式でセル内の文字列が改行されているかを判断する

こんばんは。
今回はエクセルについての豆知識です。

エクセルで最近条件付き書式を使って強調表示とかをよく使います。
その際に、”セル内の文字列が改行されている場合セルの書式を変更する”というような条件付き書式を設定したかったのですが、ここで結構詰まったのでメモしておきます。

なお、私が使っているのはOffice2011 for Macです。

エクセルの改行コード

色々ググってみると、エクセルの場合改行コードはCHAR(10)で表せることが分かりました。
しかし、SEARCH関数とか使ってやってみてもうまくできず・・・
そこでもう少し調べてみると、Mac版の場合はCHAR(13)で表すということが分かりました。
やっぱりWindowsMacで違うんですね...(そりゃそうですけど)

ということで、エクセルの改行コードは以下で表せることが分かりました。

これを使って条件付き書式をしたいと思います。

条件付き書式の設定

ここでは”条件付き書式をするセル内の文字列に改行コードが含まれている場合、書式を変更する”という処理をします。
やり方は以下の手順になります.

  1. 条件付き書式で、セルの強調表示ルールを選びます。
  2. 「数式を利用して、書式設定するセルを決定」を選びます。
  3. 以下の数式を使います(A1のセルに文字列があるとします)

=IF(ISERROR(SEARCH(CHAR(13),$A$1)),0, 1)>0

以上です。Windowsの場合はCHAR(10)とします。
また、複数のセルにフィルしたい場合は絶対参照を外します。

解説

一応以下細かめな解説です。

使っている関数はSEARCH, ISERROR, IFの3つです。

  • SEARCH関数

SEARCH関数は検索対象の文字列が含まれている位置を返す関数です。それを使い、改行コードが含まれている位置を返しています(含まれていない場合はエラーとなります)。

  • ISERROR関数

ISERROR関数はエラー判定の関数です。エラーの場合はTRUE, そうじゃない場合はFALSEを返します。
よって、改行コードが含まれている場合はエラーではないのでFALSE、改行コードが含まれていない場合はSEARCH関数がエラーとなるのでTRUEを返します。

  • IF関数

最後に、IF関数でISERRORがTRUEの場合は0、FALSEの場合は1を返すようにし、IFが0より大きい値を返す場合、セルの書式を変更するという処理にしています。

以上です。
それでは。

参考にさせていただいたサイト

Office TANAKA - Excel Tips[セル内改行の前後で分割する]