• ベストアンサー

数字部分のみ別のセルに移動したいです。

複数のセルの、数字部分のみ別のセルに移動したいのですが、 教えていただけますでしょうか? 例 セルA aaa1234 bbb5678 ccc9874 ddd5642 ↓ セルA   セルB aaa     1234 bbb     5678 ccc     9874 ddd     5642 このように、文字と数字を分けたいです。 よろしくお願いします。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 質問通り必ず数値は最後にあり連続しているとします。 ↓の画像で B1セルに =SUBSTITUTE(A1,C1,"") C1セルに =MID(A1,COUNT(MID(A1,ROW($A$1:$A$20),1)*1),20) C1セルは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → C1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後の{ }マークが入り配列数式になります。 最後にB1・C1セルを選択 → C1セルのフィルハンドルで下へコピー! これで画像のような感じになります。 (A列が20文字まで対応できる数式です) 尚、数値位置が決まっていない場合はVBAになりますが一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, myStr As String, str1 As String, str2 As String For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) myStr = Mid(StrConv(Cells(i, "A"), vbNarrow), k, 1) If myStr Like "[0-9]" Then str2 = str2 & myStr Else str1 = str1 & myStr End If Next k Cells(i, "A") = str1 Cells(i, "B") = str2 str1 = "" str2 = "" Next i End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので 別Sheetでマクロを試してください。m(_ _)m

aki12341234
質問者

お礼

ありがとうございます! 数値位置が決まっていなかったため、2つ目の方法で試しましたところ、成功しました。 何時間かかるかわからない作業が一瞬で片付きました。 感動です。誠にありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です。 前回のC1セルの数式は間違っていました。 ↓の数式に変更してください。 今回もC1セルは配列数式です。 =1*MID(A1,MATCH(TRUE,ISNUMBER(1*MID(A1,ROW($A$1:$A$20),1)),0),COUNT(1*MID(A1,ROW($A$1:$A$20),1))) 前回の数式では数字前の文字数変化に対応できません。 どうも失礼しました。m(_ _)m

  • emaxemax
  • ベストアンサー率35% (44/124)
回答No.2

数字と文字をわけるのではありませんが、ご提示のように左3文字が数字、残りが文字なら =LEFT(A1,3) で、左の3文字を =MID(A1,4,LEN(A1)) で、残りを取得できます。

関連するQ&A