○○-△△-□□-□□
というコードがあります。
最初のハイフンの後の、△△を下記のような要件で
抜き出しいのです。
最初のハイフンの直後の1文字が英字→最初のハイフンの直後の1文字だけ抜き
出す
最初のハイフンの直後の1文字が数字→最初のハイフンの直後の3文字だけ抜き
出す
以上の要件で関数を作って頂けますでしょうか。
お忙しい所恐縮です。
一番良い回答にはイルカ賞を進呈させて頂きます。
よろしく、お願いいたします。
例
AA2-G10-180-D →G
AA2-3G1456-180-D →3G1
何か、要件上のお問い合わせ等ありましたら、
コメント欄にて、お聞きいただけると幸いです。
これでどうでしょうか?A1に文字列が入っていると仮定しています。
=IF(ISNUMBER(1*MID(A1,FIND("-",A1)+1,1)),MID(A1,FIND("-",A1)+1,3),MID(A1,FIND("-",A1)+1,1))
該当しない場合は 何も値は 返しません。
Function getdata(a As String) As String getdata = "" b = InStr(1, a, "-") If b = 0 Or b = Len(a) Then Exit Function c = Mid(a, b + 1, 1) If c >= "a" And c <= "z" Then getdata = Mid(a, b + 1, 1) Exit Function End If If c >= "A" And c <= "Z" Then getdata = Mid(a, b + 1, 1) Exit Function End If If c >= "0" And c <= "9" Then getdata = Mid(a, b + 1, 3) Exit Function End If End Function
ありがとうございます。
わずかですがポイントにて感謝の意を表させて頂きます。
でも長いですね。。
これでどうでしょうか?A1に文字列が入っていると仮定しています。
=IF(ISNUMBER(1*MID(A1,FIND("-",A1)+1,1)),MID(A1,FIND("-",A1)+1,3),MID(A1,FIND("-",A1)+1,1))
ありがとうございます。
シンプルなので、こちらを採用させて頂こうと思います。
対象の文字列が A1 に入っているとして、
=IF(ISERROR(MID(A1,FIND("-",A1)+1,1)*1),MID(A1,FIND("-",A1)+1,1),MID(A1,FIND("-",A1)+1,3))
このような関数でいかがでしょうか。
ありがとうございます。
わずかですがポイントにて感謝の意を表させて頂きます。
数字の部分は半角数字で良かったでしょうか。
どうぞお使いくださいね。
Sub Macro1()
'1行目がタイトルの場合は2を指定してください。
sro = 1: 'タイトルが無いと仮定
'
lro = Range("A1").End(xlDown).Row
For i = sro To lro
samd = Cells(i, 1)
fst = InStr(samd, "-") + 1
If IsNumeric(Mid(samd, fst, 1)) Then
Cells(i, 2).Value = Mid(samd, fst, 3)
Else
Cells(i, 2).Value = Mid(samd, fst, 1)
End If
Next
End Sub
ありがとうございます。
わずかですがポイントにて感謝の意を表させて頂きます。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | lipper | 33回 | 28回 | 2回 | 2011-05-30 11:41:08 |
ありがとうございます。
シンプルなので、こちらを採用させて頂こうと思います。