#author("2021-12-10T01:30:47+00:00","default:ogiwiki","ogiwiki") #author("2021-12-10T01:31:28+00:00","default:ogiwiki","ogiwiki") *Excelの文字列関数とIF関数 [#b7419ef1] **文字列関数 [#y5b4067c] ''[[Microsoft Office 文字列関数 (リファレンス)>https://support.office.com/ja-jp/article/%E6%96%87%E5%AD%97%E5%88%97%E9%96%A2%E6%95%B0-%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9-cccd86ad-547d-4ea9-a065-7bb697c2a56e]]'' -例:BCCWJ書籍のジャンル(NDC)の整理 (新) 9 文学/933/0197|(旧) 9 文学/933/0197 (新) 2 歴史/292.09/0125|(旧) 2 歴史/292/0125 (新) 7 芸術・美術/787.1/0075|(旧) 7 芸術・美術/787/0075 (新) 9 文学/913.68/0093|(旧) 9 文学/913/0093 --先頭の5文字を取り出す(NDCの一次区分(=類)) ---=LEFT(&color(red){ジャンルのセル};,5) ---例:(新) 9 --5文字目から1文字取り出す(NDCの一次区分(=類)) ---=MID(&color(red){ジャンルのセル};,5,1) ---例:9 --スラッシュで区切られた最初の部分(ジャンルの大分類) --スラッシュで区切られた最初の部分(「(新)」を除く)(ジャンルの大分類) ---=MID(&color(red){ジャンルのセル};,5,SEARCH("/",&color(red){ジャンルのセル};)-5) ---例:9 文学 -覚えておくと良い文字列関数(引数などはリファレンス参照) --LEFT 左側から指定文字数分 --RIGHT 右側から指定文字数分 --MID 指定位置から指定文字数分 --LEN 文字列の長さ --SEARCH/FIND 指定文字列の位置 --SUBSTITUTE 文字列の置換 --EXACT 一致の確認 --CONCAT/TEXTJOIN 文字列の結合(範囲指定可) ※Excel2016以降 --PHONETIC ふりがなの取り出し ※Excel上で入力したセルのみ **文字列の結合 [#ae9b57a6] -文字列を直接書き込む場合は""で囲む -&で文字列同士を結合 --例: ="今日は"& DAY(TODAY()) & "日です。" **IF関数による条件分け [#pac71525] -条件わけ:IF --[[IF関数リファレンス>https://support.office.com/ja-jp/article/if-%E9%96%A2%E6%95%B0-69aed7c9-4e8a-4755-a9bc-aa8bbff73be2]] -エラー対応:IFERROR --[[IFERROR関数リファレンス>https://support.office.com/ja-jp/article/IFERROR-%E9%96%A2%E6%95%B0-C526FD07-CAEB-47B8-8BB6-63F3E417F611]] -応用例:BCCWJの品詞の大分類を取り出す |名詞-普通名詞-一般|名詞| |動詞-一般|動詞| |形容詞-一般|形容詞| |代名詞|代名詞| -=IFERROR(LEFT(&color(red){品詞};,SEARCH("-",&color(red){品詞};)-1),&color(red){品詞};) --品詞に「-」がない場合にエラーになるのを避けている **おまけ:Excelの文字列関数で前後文脈を整える [#obd38d9d] |前文脈|キー|後文脈|h |のカレー食べてみたいですか?#宝くじがあたれば食べてみたいですね。#|カレー|に1万円もかけるほどの余裕はありませんから・・・・・・| |京都市内でスープ|カレー|を食べられる店はありませんか?#すっごく興味があるのですが、札幌は| -後文脈の「#」より後を消す(「#」がない場合はそのまま) =IFERROR(LEFT(<後文脈>,SEARCH("#",<後文脈>)-1),<後文脈>) -前文脈の「#」以前を消す(「#」がない場合はそのまま)((「#」が複数ある場合の処理があるので難しい。「~」は前文脈に決して出現しない文字を指定)) =RIGHT(<前文脈>,LEN(<前文脈>)-(FIND("~",SUBSTITUTE("#"&<前文脈>,"#","~",LEN("#"&<前文脈>)-LEN(SUBSTITUTE("#"&<前文脈>,"#",""))),1)-1)) ※当該列をエディタにコピーして正規表現で置換した方が早い