#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))

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

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