特定の形式の文字列を削除する
使う関数 | |
---|---|
カテゴリー | 文字列操作 |
使えるバージョン |
|
作業に使うデータ | produce101japan-members-1 |
Question
C列の「生年月日」は現状、(2001-08-04) 2001年8月4日(22歳)
みたいな形式になっている。
別なシート(sheet2)を作成し、そのC列に、
(xxxx-xx-xx)
の部分を消して表示する-
とだけ入力されている番組辞退者のセルには、非公開
と入力する
デモの操作方法
- C2セルをダブルクリックして関数を確認
- C2セルをクリックし、右下の四角を下にドラッグして関数をコピー
Answer
sheet2のセルC2に以下の関数を入力し、ドラッグ操作でセルC102までコピーする。
解答例
Excel 2021以降やMicrosoft 365では、関数内でC2:C102
のように複数のセルを一度に指定して、 Enter を押すことで、C102セルまで一気に関数が実行される。(スピル機能)
解答例(スピル機能が使える場合)
1. IF関数の使い方を理解する
結果がTRUEかFALSEになるものを条件式と呼ぶ。
「〜かどうか?」という問いに対して、FALSEは「そうじゃない」、TRUEは「そうです」という意味を持つ。
2. 分岐のための条件を作る
(2001-08-04)のような形式の文字列を探すために、 部分文字列を検索し、始まる位置を求める関数 部分文字列を検索し、始まる位置を求める関数 SEARCH (
FIND (
部分文字列を検索し、始まる位置を求める関数 部分文字列を検索し、始まる位置を求める関数 SEARCH (
FIND (
-
FIND (
検索文字列 , 検索対象)部分文字列を検索し、始まる位置を求める関数
実行結果- 指定した文字列が見つかれば指定した文字列の開始位置(何文字目か)
- 指定した文字列が見つからなければ#VALUEエラー
-
-
SEARCH (
検索文字列 , 検索対象)部分文字列を検索し、始まる位置を求める関数
実行結果- 指定した文字列が見つかれば指定した文字列の開始位置(何文字目か)
- 指定した文字列が見つからなければ#VALUEエラー
-
?
は何かしらの1文字を表すワイルドカードで、(2001-08-04)のような形式の文字列を探す場合は次のように書ける。
部分文字列を検索し、始まる位置を求める関数 SEARCH (
- 指定した文字列が見つかれば、その開始位置(何文字目か)
- 指定した文字列が見つからなければ、#VALUEエラー
ここでは、「(2001-08-04)のような形式の文字列が含まれていない」という条件を作りたい。
先ほどの 部分文字列を検索し、始まる位置を求める関数 SEARCH (
-
SEARCH (
検索文字列 , 検索対象)部分文字列を検索し、始まる位置を求める関数
実行結果- 指定した文字列が見つかれば指定した文字列の開始位置(何文字目か)
- 指定した文字列が見つからなければ#VALUEエラー
-
-
SEARCH (
検索文字列 , 検索対象)部分文字列を検索し、始まる位置を求める関数
実行結果- 指定した文字列が見つかれば指定した文字列の開始位置(何文字目か)
- 指定した文字列が見つからなければ#VALUEエラー
-
という条件式ができあがる。
3. IF関数を組み立てる
先ほど作った条件式を使って、
(????-??-??)という形式の文字列が存在する場合は、(????-??-??)部分を削除したものを表示したいが、今はとりあえずTODO
という文字を表示するようにしている。
ダブルクォート(””
)で囲んだ内容は、文字列としてそのまま表示される。
4. (xxxx-xx-xx)の部分を削除する処理を考える
TODO部分では、(xxxx-xx-xx)の部分を削除する処理を行う。
(xxxx-xx-xx)の部分を削除するということは、(xxxx-xx-xx)の最後の閉じカッコ)
以降だけを 残す(取り出す) ということ。
文字列の途中から最後まで取り出す場合は、
文字列の最後まで取り出す場合は、最後の文字まで確実に取り出せる文字数を指定する必要がある。
どんなに長い文字列でも大丈夫なように、文字列全体の文字数(
(xxxx-xx-xx)は12文字なので、(xxxx-xx-xx)の次の文字は13文字目になる。
文字列の13文字目から最後まで取り出せばよい。
5. 半角スペースを削除する
(2001-08-04) 2001年8月4日(22歳)
のように、(2001-08-04)
と2001年8月4日(22歳)
の間には、半角スペースが空いている。
そのため、先ほどの
MID関数の開始位置13を14に変えることでも、このスペースを除いた上で日付を抽出することはできるが、万が一スペースが空いていない行もある可能性に備えて、
6. 完成🎉