幼稚園時代「何組」でしたか?

Excel2003 VBAで文字だけを残して数字だけを消す方法を色々と考えたのですが
上手くマクロが作れずにおります。

例として、

A列    B列  C列
7月1日  東京  ABCDEF123456GHIJK

のような、C列の部分のみ、文字と文字の間にある数字の部分だけを消したいのです。
理想的な結果としては

7月1日 東京 ABCDEFGHIJK

という状態にしたいのですが可能でしょうか?
ctrl+Gでは、全部消えてしまって困っています。

以上、宜しくお願いします。

A 回答 (4件)

こういう感じではいかがでしょうか?



Sub test()
  Dim myStr As String
  Dim i As Long, j As Long '変数宣言
  For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row 'C列1行~最終行まで
    For j = 1 To Len(Cells(i, "C").Value) 'C列i行目セルの1文字~最終文字
      If Not IsNumeric(Mid(Cells(i, "C"), j, 1)) Then '数字でなければ
        myStr = myStr + Mid(Cells(i, "C"), j, 1) '変数myStrに格納
      End If
    Next j '繰り返し
    Cells(i, "C").Value = myStr 'C列i行目セルにmyStr転記
    myStr = "" 'myStr転記を空に
  Next i '繰り返し
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
望み通りの結果で動きました。ありがとうございました。

お礼日時:2011/07/09 00:46

>VBAで文字だけを残して数字だけを消す方法


 ⇒一例です。
Sub sample()
For i = 1 To Cells(Rows.Count, "C").End(xlUp).Row
For j = 1 To Len(Cells(i,"C"))
ch = Mid(Cells(i, "C"), j, 1)
If Not ch Like "[0-9]" Then
wk = wk & ch
End If
Next
Cells(i,"C").Value = wk
wk = ""
Next
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
参考にさせていただきます。

お礼日時:2011/07/09 00:50

正規表現を使います。



例:1行目のC列から数字を除去する
Set 正規表現 = CreateObject("VBScript.RegExp")
正規表現.Global = True
正規表現.Pattern = "\d+"
Cells(1, 3) = 正規表現.Replace(Cells(1, 3), "")

正規表現と構文は下記URLを参照してください。
http://msdn.microsoft.com/ja-jp/library/cc392487 …
http://msdn.microsoft.com/ja-jp/library/cc392020 …

これは応用範囲の広い技術なので、
習得されることを薦めます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
正規表現…習得できるように精進致します。

お礼日時:2011/07/09 00:49

色々やり方はあるが


Sub test01()
i = 1
x = Cells(i, "A")
For k = 1 To Len(x)
If IsNumeric(Mid(x, k, 1)) Then
Else
s = s + Mid(x, k, 1)
End If
Next k
MsgBox s
End Sub
が考え易いだろう。
i を行数分繰返すようにFor Next でも使うこと。
Sub test01()
For i = 1 To 2
s = ""
x = Cells(i, "A")
For k = 1 To Len(x)
If IsNumeric(Mid(x, k, 1)) Then
Else
s = s + Mid(x, k, 1)
End If
Next k
MsgBox s
Next i
End Sub
正規表現など将来の課題にしするのかな。
関数では文字の塊+数字の塊など2分割ぐらいの例ばかりなら可能。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
まだまだ未熟者ですが頂いた回答を無駄にしないように頑張ります。

お礼日時:2011/07/09 00:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報