[[20190607123410]] 『文章から桁数固定の任意の数字を抽出したい』(まっちゃ) ページの最後に飛ぶ

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

 

『文章から桁数固定の任意の数字を抽出したい』(まっちゃ)

セル内の文章から桁数固定の任意の数字を抽出したいです。

4桁の数字のみを別のセルに表示させるための関数を教えてください。

次のA〜Cのから、それぞれA=0001 B=0002 C=0003 を取り出したいです。

A 0001_6月7日_20件
B 6月7日分_0002_20件
C 0003_20案件_6月7日

共通点は対象の4桁の後ろには、必ず直後に【_】(アンダーバー)が付くことぐらいです。。。

どうかよろしくお願いいたします。

< 使用 Excel:Office365、使用 OS:Windows7 >


 Bにあるように文字列の途中にある場合は数字の前にも必ず_がつくのだろうか?
 また
 AAAAA_1234
 のように文字列の最後になることはあるのだろうか?
(ねむねむ) 2019/06/07(金) 14:13

取り出したい数字部分は4桁で、それはアンダーバー区切りの先頭、または2番目に必ずある。更には、先頭が4桁数字でない場合は年月になっている、という条件下でのみ有効な数式なぞ。(もっと良い手がありそうですが…)
 B1: =CLEAN(MID(SUBSTITUTE($A1,"_",REPT(CHAR(9),100)),100*(IF(LEFT(A1,4)*1<10000,1,2))-99,100))

とりあえずこれで試してみて、駄目だった例を列挙してもらうと、他の方の確認にもなる事でしょう。
(???) 2019/06/07(金) 14:17


 元の文字列は最大で何文字ぐらいなんですかね?
 50文字ぐらいだとして

 >共通点は対象の4桁の後ろには、必ず直後に【_】(アンダーバー)が付くことぐらいです。。。

 文字列がA1セル
 =IFERROR(MID(A1,MATCH(1,INDEX((RIGHT(MID(A1,ROW($A$1:$A$50),5))="_")*ISNUMBER(LEFT(MID(A1,ROW($A$1:$A$50),5),4)*1),0),0),4),"")

 提示の3例でしか試してませんが
 12E3_4567_aaa のように、アンダーバーの前に数字に挟まれた「E」「e」があるとうまくいきません。
「12E3」を取り出してしまう。
 こんな場合も考慮する必要がありますか?

 とりあえず以上です
(笑) 2019/06/07(金) 14:35

 ↓ でよかったかも

 =IFERROR(MID(A1,MATCH(1,INDEX((RIGHT(MID(A1,ROW($A$1:$A$50),5))="_")*ISNUMBER(MID(A1,ROW($A$1:$A$50),4)*1),0),0),4),"")
 
「E」の問題は解消されてませんが

 以上です
(笑) 2019/06/07(金) 14:50

皆さま

ご協力ありがとうございました!!

(笑)さまの方法で文字数のみ(50)を(250)へ変えて無事解決しました。
数字の間に他の文字列が挟まることは今のところ考えられないのでこれでいこうと思います。

本当に助かりました。
(まっちゃ) 2019/06/07(金) 15:20


 いまさらで申し訳ないですけど
 ↓ のように、4桁の数字の前に「日にちが1桁の日付」とか「月1桁の年月」があるとダメですね。

 12月7日_0002_20件
 2019年6月_0002_20件

 一応
 =IFERROR(MID(A1,MATCH(1,INDEX((RIGHT(MID(A1,ROW($A$1:$A$250),5))="_")*ISNUMBER(MID(SUBSTITUTE(A1,"月","★"),ROW($A$1:$A$250),4)*1),0),0),4),"")

 と変更すれば、上記については対応できそうですが、他にもあるかもしれません。

 例えば「9時5分_0002_20件」とか(こんなのがあるかどうか知りませんが)

 以上、お詫びと一応の訂正でした
(笑) 2019/06/08(土) 10:03

コメント返信:

[ 一覧(最新更新順) ]


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