Excelの文字列関数とIF関数

文字列関数

Microsoft Office 文字列関数 (リファレンス)

  • 例:BCCWJ書籍のジャンル(NDC)の整理
    0 総記/031/0221
    3 社会科学/304/0010
    9 文学/913/0193
  • 先頭の文字を取り出す(NDCの一次区分(=類))
    • =LEFT(<ジャンル>,1) *1
  • スラッシュで区切られた最初の部分(ジャンルの大分類)
    • =LEFT(<ジャンル>,SEARCH("/",<ジャンル>)-1)
  • 覚えておくと良い文字列関数(引数などはリファレンス参照)
    • LEFT 左側から指定文字数分
    • RIGHT 右側から指定文字数分
    • MID 指定位置から指定文字数分
    • LEN 文字列の長さ
    • SEARCH/FIND 指定文字列の位置
    • SUBSTITUTE 文字列の置換
    • EXACT 一致の確認
    • CONCAT/TEXTJOIN 文字列の結合(範囲指定可) ※Excel2016以降
    • PHONETIC ふりがなの取り出し ※Excel上で入力したセルのみ

文字列の結合

  • 文字列を直接指定する場合は""で囲む
  • &で文字列同士を結合
    • 例: ="今日は"& DAY(TODAY()) & "日です。"

IF関数による条件分け

  • 応用例:BCCWJの品詞の大分類を取り出す
    名詞-普通名詞-一般
    動詞-一般
    形容詞-一般
    代名詞
  • =IFERROR(LEFT(<品詞>,SEARCH("-",<品詞>)-1),<品詞>)
    • 品詞に「-」がない場合にエラーになるのを避けている

おまけ:Excelの文字列関数で前後文脈を整える

前文脈キー後文脈
のカレー食べてみたいですか?#宝くじがあたれば食べてみたいですね。#カレーに1万円もかけるほどの余裕はありませんから・・・・・・
京都市内でスープカレーを食べられる店はありませんか?#すっごく興味があるのですが、札幌は
  • 後文脈の「#」より後を消す(「#」がない場合はそのまま)
    =IFERROR(LEFT(<後文脈>,SEARCH("#",<後文脈>)-1),<後文脈>)
  • 前文脈の「#」以前を消す(「#」がない場合はそのまま)*2
    =RIGHT(<前文脈>,LEN(<前文脈>)-(FIND("~",SUBSTITUTE("#"&<前文脈>,"#","~",LEN("#"&<前文脈>)-LEN(SUBSTITUTE("#"&<前文脈>,"#",""))),1)-1))

※当該列をエディタにコピーして正規表現で置換した方が早い


*1 <○○>内は当該の値を含むセルを指定。以下同じ
*2 「#」が複数ある場合の処理があるので難しい。「~」は前文脈に決して出現しない文字を指定

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS