• 締切済み

Excelのマクロについて

文字列から数値だけを抽出するマクロを見つけたのですが、抽出するデータを選択してから実行しなければなりませんでした。 抽出するデータはAセル以下にしかないので、データを選択しないでも実行できるようにするにはどうしたら良いのでしょうか? 宜しくお願いします。 以下見つけたマクロです。  Sub test()  Dim mydata As String  Dim c As Range  Dim i As Integer  For Each c In Selection   mydata = ""  For i = 1 To Len(c)   If Mid(c, i, 1) >= 0 And Mid(c, i, 1) <= 9 Then   mydata = mydata & Mid(c, i, 1)    End If   Next   c.Offset(0, 1) = mydata   Next  End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)手動で範囲指定してから、このまま実行すれば、目的のようになります (2)範囲が決まっているなら、 Range("A1:A10").Select を最初行に入れても良い. (3)最終行が色々の場合に、そのまま使いたいなら、 Sub test() Dim mydata As String Dim c As Range Dim i As Integer d = Range("A65536").End(xlUp).Row Range("A1:A" & d).Select For Each c In Selection mydata = "" For i = 1 To Len(c) If Mid(c, i, 1) >= 0 And Mid(c, i, 1) <= 9 Then mydata = mydata & Mid(c, i, 1) End If Next c.Offset(0, 1) = mydata Next End Sub というのもあります。 ーー Sub test02() Dim mydata As String Dim c As Range Dim i As Integer Range("A1").CurrentRegion.Columns(1).Select For Each c In Selection mydata = "" For i = 1 To Len(c) If Mid(c, i, 1) >= 0 And Mid(c, i, 1) <= 9 Then mydata = mydata & Mid(c, i, 1) End If Next c.Offset(0, 1) = mydata Next End Sub など色々表現できます。 特殊なケースでは、微妙に差があるかもしれませんが。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 このように範囲をくくります。 Range("A1", Range("A65536").End(xlUp)) そして、数字を探すのは、以下のように、IsNumeric を使います。 また、マクロで、画面の上を移動するときは、必ず、画面をとめるScreenUpdating を使用します。 '標準モジュールがベター Sub testR()   Dim Mydata As String   Dim c As Range   Dim i As Integer   Application.ScreenUpdating = False   For Each c In Range("A1", Range("A65536").End(xlUp))     Mydata = ""     For i = 1 To Len(c.Value)       If IsNumeric(Mid$(c.Value, i, 1)) Then         Mydata = Mydata & Mid$(c.Value, i, 1)       End If     Next     c.Offset(, 1).Value = Mydata   Next   Application.ScreenUpdating = True End Sub なお、文字の中を一括で取る場合は、正規表現を使用します。

momonga002
質問者

お礼

ありがとう御座います! 無事解決できました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.1

これでどうですか? Sub test2()  Range("A1:A" & Range("A65536").End(xlUp).Row).Select  Call test End Sub

momonga002
質問者

お礼

有難う御座います!

関連するQ&A