[[20230606120354]] 『一番右のアンダーバー以降の文字列を取得(ただし』(ふくまる) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一番右のアンダーバー以降の文字列を取得(ただし例外あり)』(ふくまる)

お世話になります。

特定のセル(例えばA1)の文字列を参照し、以下の条件でB1セルに値を自動入力する関数を組んでいます。

1.A1の文字列のどこかに"kuro"が含まれている場合、B1に「黒」と入力
2.1がFalseの場合、一番最後のアンダーバーより右側の文字列をB1に入力
3.ただし、2の文字列が"ab6_9"や"ru11_13"のように数値の組み合わせが2つある場合は、最後から2番目のアンダーバーより右側の文字列を取得する

1と2は下記の式で可能ですが、3をどのようにすれば良いかわかりません。

=IF(COUNTIF(A1,"*_kuro*"),"黒",RIGHT(A1,LEN(A1)-FIND("●",SUBSTITUTE(A1,"_","●",LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))))))

ご教示いただけると大変助かります。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 3番目のパターン、例と結果を示してもらえないだろうか?

 あと365であればTEXTAFTER関数が使えないだろうか?

 =TEXTAFTER(A1,"_",-1)
 で、A1セルの文字列の一番最後の"_"より後を抜き出す。
(ねむねむ) 2023/06/06(火) 12:26:51

ねむねむさん、早速ありがとうございます。
文字列の例を示します:

<ケース2>
id_abc_ru10

<ケース3>
id_abc_ru11_13

ケース3について、現在の式では"13"しか取り出せませんが、正しくは"ru11_13"となるよう、ひとつの式でケース2と3を区別したいです。

TEXTAFTER関数については知識不足でした。
ケース2と3を区別できればこれを使いシンプルにできますね!
(ふくまる) 2023/06/06(火) 12:43:59


 現在、式をたてて確認できるのが2016なのでアイデアだけ。
 TEXTSPLIT関数を使うと一つの文字列から区切り文字で区切った配列を求められる。

 =TEXTSPLIT("id_abc_ru11_13","_")
 で
 id_abc
 abc
 ru11
 13
 という配列を得られる。
 で
 =RIGHT(INDEX(TEXTSPLIT("id_abc_ru11_13","_"),LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))))
 で
 ru11
 の右端、1が

 =LEFT(INDEX(TEXTSPLIT("id_abc_ru11_13","_"),LEN(A1)-LEN(SUBSTITUTE(A1,"_",""))+1))
 で
 13
 の左端 1が得られるので
 その両方が数値かどうかで判断できないだろうか?
(ねむねむ) 2023/06/06(火) 13:19:50

ありがとうございます。
試してみます!
(ふくまる) 2023/06/06(火) 13:38:29

 _が2個以上なら
TEXTAFTER(A1,"_",-(ISEVEN(COLUMNS(TEXTSPLIT(A1,"_")))+1))
(どん) 2023/06/06(火) 14:18:52

 ああ、わざわざTEXTSPLIT関数の必要はなかった。
 で式を立ててみた。
 TEXTBEFORE関数で最後の_の前を抜き出しその右端、TEXTAFTER関数で最後の_の後ろを抜き出しその左端をチェック。

 ただ365で試していないため、エラーなく動くかは未保障。

 =LET(aa,LEN(A1)-LEN(SUBSTITUTE(A1,"_","")),
   IF(COUNTIF(A1,"*_kuro*"),"黒",TEXTAFTER(a1,"_",IF(AND(ISNUMBER(RIGHT(TEXTBEFORE(A1,"_",aa))*1),ISNUMBER(LEFT(TEXTAFTER(A1,"_",aa))*1)),-2,-1))))
(ねむねむ) 2023/06/06(火) 14:25:06

皆さま、どうもありがとうございます。
お礼が遅れ大変失礼しました。
試してみます!
(ふくまる) 2023/06/09(金) 11:36:51

ねむねむさん、どんさん
ご教示いただいたどちらの式でもうまくいくことが確認できました。
誠にありがとうございました!
(ふくまる) 2023/06/16(金) 13:32:34

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.