- ベストアンサー
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
- みんなの回答 (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
その他の回答 (2)
- mshr1962
- ベストアンサー率39% (7417/18945)
ハイフンを除いた数字が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)
お礼
回答ありがとうございます。 試したところ1桁の抜き出ししか上手くいきませんでした。
- mt2008
- ベストアンサー率52% (885/1701)
手抜きのユーザー関数を作ってみました 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)
お礼
回答ありがとうございます。 VBAはまだ浅学なのですが、標準モジュールに貼り付けて試してみたところ変数が定義されていないと出ました。
お礼
思い通りの事ができました。 ありがとうございました。