• ベストアンサー

Excelでハイフンが入った文字列の抽出について

A列に『12-1』、『1-5-10』、『14-15-6-3』など1桁また2桁の数字がハイフンで区切られた文字列があるとします。 そこからB列には左から2番目の数字、C列には右から2番目の数字、D列には1番右端の数字を関数で抽出したいのですが、出来ないでしょうか。 全部半角で、必ず数字は二つ以上あり、桁数は2桁までです。下記の画像のようにしたいです。 http://uproda.2ch-library.com/801593yFu/lib801593.jpg

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

各々の数値の桁数は何桁でもいいようになっています。1桁、2桁を気にすると作れないですね。 同じ構造の式で、取り出す位置のみを変えています。添付図と同じ値にはなりました。 図のB2:=MID(SUBSTITUTE("-"&$A2,"-",REPT(" ",LEN($A2))),LEN($A2)*2,LEN($A2))*1 図のC2:=MID(SUBSTITUTE("-"&$A2,"-",REPT(" ",LEN($A2))),LEN($A2)*(LEN($A2)-LEN(SUBSTITUTE($A2,"-",""))),LEN($A2))*1 図のD2:=MID(SUBSTITUTE("-"&$A2,"-",REPT(" ",LEN($A2))),LEN($A2)*(LEN($A2)-LEN(SUBSTITUTE($A2,"-",""))+1),LEN($A2))*1

Excel401
質問者

お礼

思い通りの事ができました。 ありがとうございました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

ハイフンを除いた数字が4桁以上なら >B列には左から2番目の数字 =MID(SUBSTITUTE(A2,"-",""),2,1) >C列には右から2番目の数字 =MID(SUBSTITUTE(A2,"-",""),LEN(SUBSTITUTE(A2,"-",""))-1,1) または =LEFT(RIGHT(SUBSTITUTE(A2,"-",""),2),1) >D列には1番右端の数字 =RIGHT(SUBSTITUTE(A2,"-",""),1)

Excel401
質問者

お礼

回答ありがとうございます。 試したところ1桁の抜き出ししか上手くいきませんでした。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

手抜きのユーザー関数を作ってみました Function fSample(sTarget As String, sLR As String, nPos As Long) As Long   sData = Split(sTarget, "-")   nCount = nPos - 1   If UCase(sLR) = "R" Then nCount = UBound(sData) - nCount   fSample = CLng(sData(nCount)) End Function で、B2セルに =fSample(A2,"L",2) C2セルに =fSample(A2,"R",2) D2セルに =fSample(A2,"R",1)

Excel401
質問者

お礼

回答ありがとうございます。 VBAはまだ浅学なのですが、標準モジュールに貼り付けて試してみたところ変数が定義されていないと出ました。