• ベストアンサー

記述を変えて

教えてください。 エクセルのSheet1のB列に商品コードがあります。 たとえば 10-25P2APznk この記述を変えてP2AP10-25znk としたいのですが、現在のコードが400個あり、新しい記述方法に かえる方法はありますか?ただ、桁数がまちまちです。 5-45CAP を CAP5-45  M8Nznt を NM8znt とかです。 お願いします。

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

  • ベストアンサー
  • nobu555
  • ベストアンサー率45% (158/345)
回答No.1

以下の方法は如何でしょう。 質問から条件を設定すると、 コードの一部を抜き出して先頭に持ってくる となりますので、 コードがA列にあり、抜き出す文字列をB列に入力した場合、 C列に下記の数式を入力する =B1&SUBSTITUTE(A1,B1,"")

すると、全ての回答が全文表示されます。

その他の回答 (1)

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

質問にある3つの事例から読み取れる変換方法は、 (1)[アルファベット小文字]の位置はそのまま (2)数値(または-)から[アルファベット大文字]に変わった位置が切れ目で、ここで前後を入れ替える このような推測で下のコードを書いてみました。ユーザー定義関数です。 質問の仕方としては、「新しい記述方法」とやらを明確にするのが本筋でしょう。あくまで、推測のコードです。 ツール→マクロ→Visual Basic Editor でVBE画面に移ります。 この画面で、挿入→標準モジュールとし、出てきた画面に下のコードをコピーして貼り付けます。 貼り付けたらシートに戻ります。 例えば、セルB2に元のコードがあれば、セルC2に =Henkan(B2) とすれば記述が変わるはずです。 ↓この下からコピーします。 Function Henkan(CODE As String) As String   Dim CD1 As String '// 数字からアルファベットに変わった前の文字   Dim CD2 As String '// 数字からアルファベットに変わった後ろの文字   Dim CD3 As String '// アルファベット小文字   Dim L As Integer  '// 文字カウンタ   Dim Pot As Integer '// 検索した文字の位置      '// アルファベット小文字を抜き出す   Pot = Len(CODE) + 1   For L = 1 To Len(CODE)     If "a" <= Mid(CODE, L, 1) And Mid(CODE, L, 1) <= "z" Then       Pot = L       Exit For     End If   Next   CD3 = Right(CODE, Len(CODE) - Pot + 1)   CODE = Left(CODE, Pot - 1)   '// 数字からアルファベットに変わる位置を探す   For L = 2 To Len(CODE)     If Mid(CODE, L - 1, 1) <= "9" And "A" <= Mid(CODE, L, 1) Then       Pot = L       Exit For     End If   Next   CD2 = Right(CODE, Len(CODE) - Pot + 1)   CD1 = Left(CODE, Pot - 1)      Henkan = CD2 & CD1 & CD3 End Function

すると、全ての回答が全文表示されます。

関連するQ&A