文字列: abcd_efgh_ijklm
抽出したい文字列:abcd_efgh
という状況なのですが
=LEFT(A1,SEARCH("__",A1)-1)
のように複数のワイルドカードでうまくいきません
なにかうまくできる方法はございますでしょうか。
宜しくお願い申しあげます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
SugiuraYさんがしたいのは『2つ目のアンダースコア("_")より左側を取り出す』という事だと推測して回答いたします。 (もし間違った推測であったなら、したいことの詳細を質問に追加してください)
"abcd_efgh_ijklm"から"abcd_efgh"を取り出す関数は、以下の通りです。
excel
1=LEFT(A1,SEARCH("_",A1,SEARCH("_",A1)+1)-1)
関数の説明:
2つ目のSEARCH関数 「SEARCH("",A1)」は、A1セルの内容に含まれる1つ目のアンダースコアの位置を調べています。A1セルの内容が"abcd_efgh_ijklm"だとすると、5文字目にアンダースコアがありますから「SEARCH("",A1)」は 5 になります。
1つ目のSEARCH関数「SEARCH("",A1,SEARCH("",A1)+1)」は、2つ目のSEARCH関数と違って引数が3つあります。3つ目の引数は何文字目から探し始めるかを指定するものです(省略すると1と解釈されて1文字目から探し始めます)。ここに2つ目のSEARCH関数の結果+1を使う事で、1つ目のアンダースコアの右側からアンダースコアを探し始めています。こうすることで2つ目のアンダースコアの位置が調べられます。
欲しいのは2つ目のアンダースコアより左側の文字列ですから、LEFT関数の2つ目の引数(文字数を指定する)に1つ目のSEARCH関数の結果-1を使っています。
投稿2017/12/05 02:34
総合スコア6915
0
ベストアンサー
手元のExcel2013ではうまく行っているようです。
SEARCH
では1
が返って、=LEFT(A1,SEARCH("*_*_",A1)-1)
では空文字列になります。
投稿2017/12/05 02:09
総合スコア84423
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 02:20
2017/12/05 02:21
2017/12/05 02:22
2017/12/05 02:31
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
複数のワイルドカード
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 05:29