原稿の入力・整理を行う人からときどき尋ねられる,Excelの関数の備忘録です.

目次

  1. 同じ値になっているかさっと確認したい
  2. 関数によるセル内改行やbrタグの置換・除去
  3. 余分なスペースを取り除きたい
  4. 半角・全角や小文字・大文字の変換
  5. 振り仮名とひらがな・カタカナの変換
  6. 表引き
  7. 曜日や月末などの条件から日付を決めたい
  8. 真偽値の数値化

同じ値になっているかさっと確認したい

2つの値はEXACT関数で比較できるので,2つのセルの値もEXACT関数や条件付き書式を使って比較することがあります.

しかし,単にA1とB1を比較したいなら

=A1=B1

とするだけで比較できます.
最初の=で関数を使ったという合図になり,残りの部分はA1=B1であるかという(IF関数を使うときのような)条件式になります.
この結果は「真偽値」,すなわち,TRUEまたはFALSEで返ります.

関数によるセル内改行やbrタグの置換・除去

セル内改行にも文字コードが当てられていることを利用してSUBSTITUTE関数を使って置換を行う方針です.
セル内改行の文字コードはCODE関数で調べてみればよいでしょう.
例えば,それがCHAR(10)であったなら,

= SUBSTITUTE(対象セル, CHAR(10), "")

とすることで,対象セルのセル内改行を除去できます.

同じ要領で,<br>をスペースにしたり,セル内改行を<br>にしたりもできます.

余分なスペースを取り除きたい

特に値の後に入っているスペースは目視確認が難しいので関数などで機械的に取り除きたいものです.
これにはTRIM関数を使います.

TRIM関数はセル内の文字列で前後のスペースを取り除き,かつ,文字列内部のスペースは1つを残して削除します.
スペースが並ぶ場合にははじめの1つを残すため,「全角スペース・半角スペース」の順だと全角スペースが残り,逆なら半角スペースが残ります.

セル内改行が含まれて3行になっているセルの場合,前後のスペースとは1行目最初のスペースと3行目末尾のスペースを指します.
1行目末,2行目前後,3行目頭のスペースが残ってしまうので注意してください.

半角・全角や小文字・大文字の変換

表記揺れを解消するために半角・全角や小文字・大文字の変換を行う場合,以下の関数が利用できます.
引数は全て文字列です.

  • JIS:半角→全角
  • ASC:全角→半角
  • UPPER:小文字→大文字
  • LOWER:大文字→小文字
  • PROPER:ファーストレターのみ大文字

入力をできるだけ簡単にして,後から変換や置換を行うと効率的です.例えば,ABC-001と大文字ばかりで連番になっている品番ならabc-001から後で大文字にした方が入力の手間が少なくて済みます.

振り仮名とひらがな・カタカナの変換

PHONETIC関数を使うとデフォルトではひらがながカタカナになります.
ふりがなの設定を行うことで,逆にしたり,半角カナにもできます.

半角カナを全角カナにするにはJIS関数も使えますが,JIS関数だと数字まで全角化されるのに対し,PHONETIC関数だとそうなりません.
反面,PHONETIC関数では漢字までふりがなになってしまいます.

表引き

表引きはXLOOKUP関数(やVLOOKUP関数)によって行います.

XLOOKUP関数は次のような形です.

= XLOOKUP(検索したい値の入った範囲, 参照する範囲, 引いてくる値のある範囲, 値が見つからなかったときに表示する値, FALSE)

最後の引数はFALSEでないと,値が見つからなかったときに近い値を拾ってきてしまうので注意してください.

「参照する範囲」と「引いてくる値のある範囲」は離れていても,右にあっても左にあっても,なんなら行ずれしていても,表引きできます.

なお,従来使われてきたVLOOKUP関数は次のような形です.

= VLOOKUP(左端の列において検索したい値, 範囲, 左から何列目か, FALSE)

曜日や月末などの条件から日付を決めたい

販売スケジュールを作成する等のために,IF関数内で特定の日付条件を書きたければ,次のようにします.

  • 月初めはDAY(日付) = 1です.
  • 月末は28日から31日までありますが,翌日が月初めになることを使えばシンプルに書けます.DAY(日付+1) = 1です.
  • 3の日(3日,13日,23日)は10で割った余りが3なので,MOD(DAY(日付), 10) = 3です.
  • 第2週は「前日までに当たるDAY(日付-1)を7で割った商が1(つまり,1週目は経過した)」と考えて,QUOTIENT(DAY(日付-1)/7) = 1とします.
  • 曜日の判定にはWEEKDAY関数を使います.日曜日であればWEEKDAY(日付) = 1です.月曜日なら2,火曜日なら3,…となります.
  • 第2週の日曜日は上をAND関数で結べばよいので,AND(QUOTIENT(DAY(日付-1)/7) = 1, WEEKDAY(日付) = 1)となります.

真偽値の数値化

Excelでは真偽値を1倍すると,数値に変換できます.
=TRUE * 1だと1が返り,=FALSE * 10が返ります.