[[20041215170531]] 『数字で挟まれた文字列の見抜きだし』(しろ) ページの最後に飛ぶ

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

 

『数字で挟まれた文字列の見抜きだし』(しろ)

質問内容:文字列 abcd01efghij234 のように数字で挟まれている文字列"efghij"だけを関数を使用し、抜き出したいと考えています。どなたかよい方法をご存知でしたらご教示ください。

[エクセルのバージョン]
Excel2002

[OSのバージョン]
Windows2000


 試作しましたが、ネストレベルが7を超えてしまったので、
名前付数式での2段構えです。
対象文字列がSheet1のA1に入力されていて、B1に出力する場合の例です。
メニューの挿入>名前>定義で

「名前」
TEMP1
「参照範囲」
=SUBSTITUTE(Sheet1!$A1,LOOKUP(10^17,--RIGHT(Sheet1!$A1,ROW(Sheet1!$A$1:$A$30))),"")
セルB1へ
=MID(TEMP1,MAX(NOT(ISERROR(--MID(TEMP1,ROW($A$1:$A$30),1)))*ROW($A$1:$A$30))+1,LEN(TEMP1)-MAX(NOT(ISERROR(--MID(TEMP1,ROW($A$1:$A$30),1)))*ROW($A$1:$A$30))+1)

 配列数式なので Enterで確定せずに ShiftとCtrlを押しながらEnter で確定。
↓検証結果です。
abcd01efghij234	efghij
dddd1ffffff0	ffffff
1fffff12354	fffff
d564a1111		a
abcdef1		abcdef
abcdef2a		#N/A
2aa		#N/A
gggg		#N/A
(みやほりん)
【追加】末尾に数字がないと#N/Aエラー。

おぉぉぉぉぉぉw(☆o◎)wどっひゃ〜〜

 しかし、なんでこんなことが出来るんですかねぇ???(^^;; ヒヤアセ
(SoulMan)

 リアクションありがとう。
こういう関数パズルは大好き♪
(みやほりん)


下記ににたような質問と回答があります。参考に
  文字列(住所)を数字で分割します。
 これを応用すれば,何とか出来そうに思います。vbaですが。(なお)

http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20041214-000010


 おはようございます。
マクロを使っていいなら
標準モジュールに貼り付けて
=MyStr(A1)
とします。
Option Explicit
Function MyStr(MyRng As Range) As String
Dim MyA As String, MyB As String, MyC As String
Dim i As Long
Dim MyFlagA As Boolean, MyFlagB As Boolean
If MyRng.Count > 1 Then Exit Function
MyFlagA = False
MyFlagB = False
MyStr = MyRng.Value
    For i = 1 To Len(MyStr)
        If IsNumeric(Mid(MyStr, i, 1)) Then
            If MyB <> "" Then
                MyC = MyB
                MyFlagB = True
            End If
                MyFlagA = True
        Else
            If MyFlagA Then
                MyB = MyB & Mid(MyStr, i, 1)
            End If
        End If
    Next
    If MyFlagA And MyFlagB Then
        MyStr = MyC
    Else
        MyStr = Empty
    End If
End Function
abcd01efghij234	efghij	efghij
dddd1ffffff0	ffffff	ffffff
1fffff12354	fffff	fffff
d564a1111	a	a
abcdef1	abcdef	
abcdef2a	#N/A	
2aa	#N/A	
gggg	#N/A	
gg1s1gg		s
aa11s11a11a11		saa
1s25saw5s15sd5		ssawssd
d5s5w33gg55ddd		swgg
1s47aaqs8854c1		saaqsc
d55s1w1d54d8dd		swdd
d15ss41vb245de		ssvb
a1ss11ww5454ss5		sswwss
145sw45aaz142s		swaaz
ss1415aq1s2154		aqs
ss141s4254as		s
s41sa1s512ssaqs		sas
121sd54s14a215x		sdsa
ss14s12as51d24		sasd
どうでしょう?
(SoulMan)

 =IF(A1="","",REPLACE(
LEFT(A1,MATCH(1,IF(ISERR(-MID(A1,ROW($1:$19),1))*ISNUMBER(-MID(A1,ROW($2:$20),1)),))),1,
MATCH(,IF(ISNUMBER(-MID(A1,ROW($1:$19),1))*ISERR(-MID(A1,ROW($2:$20),1)),),),))
 として、Ctrl+Shift+Enter。 というものなのですが、B列のように戻ります。      (LOOKUP)

    A        B       C
 1 1s25saw5s15sd5  s25saw5s15sd  ssawssd
 2 1s47aaqs8854c1  s47aaqs8854c  saaqsc
 4 d55s1w1d54d8dd  s1w1d54d    swdd
 5 d15ss41vb245de  ss41vb     ssvb
 6 a1ss11ww5454ss5  ss11ww5454ss  sswwss
 7 145sw45aaz142s  sw45aaz     swaaz
 8 ss1415aq1s2154  aq1s      aqs
 9 ss141s4254as   s        s
10 s41sa1s512ssaqs  sa1s      sas
11 121sd54s14a215x  sd54s14a    sdsa
12 ss14s12as51d24  s12as51d    sasd

げげ (゚O゚;)

 、、、これで、抽出されたものの中から数字だけを除けば

完璧

 なんじゃないんですか???
σ(^◇^;)には、できませんがぁ(;^_^A あせあせ・・・
あっ、あたまいたなってたぁ.....
(SoulMan)

 うへぇ、収まるもんですね。
(みやほりん)マイリマシタ


コメント返信:

[ 一覧(最新更新順) ]


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