書式では無理でしょうからVBA書いてみました。
・英字が1または2文字含まれること。
・数英数、または数英数英数であること。
・数字、英字の最大桁数を越えていないこと。
以上は守られていることを前提。
列Aに元の値があるとして、編集結果が列Bとします。
列Bは事前に書式を「文字列」に設定ください。
必ず結果を目視して、OKなら結果を「コピー」&「形式を選択して貼り付け-値」とすれば良いでしょう。
コードは、以下の手順で貼り付けてください。
1.ツール>マクロ>VisualBasicEditorを開く。
2.左上の「プロジェクト」内で右クリックし、挿入>標準モジュールをクリック。
3.カーソルが右上ウィンドウに移動するので、以下のコードをコピー&ペーストする。(FunctionからEnd Functionまで)
Function fncコード変換(str入力 As String) As String
Dim n英字1文字目 As Long
Dim n英字2文字目 As Long
Dim n文字位置 As Long
Dim str編集用文字列(6) As String
For n文字位置 = 1 To Len(str入力)
Debug.Print str入力, Len(str入力), n文字位置, Mid(str入力, n文字位置, 1), Asc(Mid(str入力, n文字位置, 1))
Select Case Asc(Mid(str入力, n文字位置, 1))
Case Asc("A") To Asc("Z"), Asc("a") To Asc("z")
If n英字1文字目 = 0 Then
n英字1文字目 = n文字位置
ElseIf n英字2文字目 = 0 Then
n英字2文字目 = n文字位置
Else
fncコード変換 = "書式例外エラー"
End If
End Select
Next n文字位置
str編集用文字列(1) = Format(Mid(str入力, 1, n英字1文字目 - 1), "000")
str編集用文字列(2) = StrConv(Mid(str入力, n英字1文字目, 1), vbUpperCase)
str編集用文字列(3) = " "
If n英字2文字目 = 0 Then
str編集用文字列(4) = Format(Mid(str入力, n英字1文字目 + 1, Len(str入力)), "00000")
str編集用文字列(5) = ""
str編集用文字列(6) = ""
Else
str編集用文字列(4) = Format(Mid(str入力, n英字1文字目 + 1, n英字2文字目 - n英字1文字目 - 1), "00000")
str編集用文字列(5) = StrConv(Mid(str入力, n英字2文字目, 1), vbUpperCase)
str編集用文字列(6) = Format(Mid(str入力, n英字2文字目 + 1, Len(str入力)), "00")
End If
fncコード変換 = Join(str編集用文字列(), "")
End Function
4.保存する。
5.シートへ戻り、入力セルがA1なら、セルB1に式設定。
=fncコード変換(B1)
6.必要に応じて下方向にコピー。(セルB1の右下にある■をダブルクリックでOK)
お試しください。
お礼
・31日の棚卸結果で早速試させて頂きました。式のコピーを間違えて最初はうまく出来ませんでしたが何とか結果を出せました。ありがとうございました。