人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの関数を作って頂きたく思います。
○○-△△-□□-□□
というコードがあります。
最初のハイフンの後の、△△を下記のような要件で
抜き出しいのです。

最初のハイフンの直後の1文字が英字→最初のハイフンの直後の1文字だけ抜き
出す
最初のハイフンの直後の1文字が数字→最初のハイフンの直後の3文字だけ抜き
出す

以上の要件で関数を作って頂けますでしょうか。
お忙しい所恐縮です。
一番良い回答にはイルカ賞を進呈させて頂きます。
よろしく、お願いいたします。


AA2-G10-180-D →G
AA2-3G1456-180-D →3G1

何か、要件上のお問い合わせ等ありましたら、
コメント欄にて、お聞きいただけると幸いです。

●質問者: martytaka
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:G10 イルカ賞 エクセル コメント欄 コード
○ 状態 :終了
└ 回答数 : 4/5件

▽最新の回答へ

1 ● きゃづみぃ
●14ポイント

該当しない場合は 何も値は 返しません。

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
◎質問者からの返答

ありがとうございます。

わずかですがポイントにて感謝の意を表させて頂きます。

でも長いですね。。


2 ● mezase50
●12ポイント ベストアンサー

これでどうでしょうか?A1に文字列が入っていると仮定しています。

=IF(ISNUMBER(1*MID(A1,FIND("-",A1)+1,1)),MID(A1,FIND("-",A1)+1,3),MID(A1,FIND("-",A1)+1,1))

◎質問者からの返答

ありがとうございます。

シンプルなので、こちらを採用させて頂こうと思います。


3 ● ootatmt
●12ポイント

対象の文字列が A1 に入っているとして、

=IF(ISERROR(MID(A1,FIND("-",A1)+1,1)*1),MID(A1,FIND("-",A1)+1,1),MID(A1,FIND("-",A1)+1,3))

このような関数でいかがでしょうか。

◎質問者からの返答

ありがとうございます。

わずかですがポイントにて感謝の意を表させて頂きます。


4 ● spyglass
●12ポイント

数字の部分は半角数字で良かったでしょうか。

どうぞお使いくださいね。


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

◎質問者からの返答

ありがとうございます。

わずかですがポイントにて感謝の意を表させて頂きます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ