Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1666 / 13644 ツリー ←次へ | 前へ→

【72747】文字列の中の数字のみを取得 Aoichi 12/9/15(土) 8:22 質問[未読]
【72748】Re:文字列の中の数字のみを取得 ドカ 12/9/15(土) 8:35 回答[未読]
【72750】Re:文字列の中の数字のみを取得 UO3 12/9/15(土) 8:54 発言[未読]
【72752】Re:文字列の中の数字のみを取得 ドカ 12/9/15(土) 11:09 発言[未読]
【72753】Re:文字列の中の数字のみを取得 UO3 12/9/15(土) 11:52 発言[未読]
【72757】Re:文字列の中の数字のみを取得 とおりすがり 12/9/15(土) 17:21 発言[未読]
【72749】Re:文字列の中の数字のみを取得 UO3 12/9/15(土) 8:45 発言[未読]
【72751】Re:文字列の中の数字のみを取得 Aoichi 12/9/15(土) 10:39 お礼[未読]

【72747】文字列の中の数字のみを取得
質問  Aoichi  - 12/9/15(土) 8:22 -

引用なし
パスワード
   お世話になります
以下のような文字列にある数字のみを
取得したいのですが 取得方法を
教えていただきたいのです

"商品A1200円" "商品B580円" "商品C1550円"

 取得結果 1200 580 1550 をそれぞれ
 変数に格納したいのです

よろしくお願いします

【72748】Re:文字列の中の数字のみを取得
回答  ドカ  - 12/9/15(土) 8:35 -

引用なし
パスワード
   ▼Aoichi さん:
ネットで VBA 文字 数字 で検索すれば簡単に見つかりますよ。

Sub v()
  For i = 1 To Len(Range("a1"))
    myStr = Mid(Range("a1"), i, 1)
    If myStr Like "[0-9]" Then
      myn = myn & myStr
    End If
    Range("b1") = myn
  Next
End Sub

【72749】Re:文字列の中の数字のみを取得
発言  UO3  - 12/9/15(土) 8:45 -

引用なし
パスワード
   ▼Aoichi さん:

おはようございます。
正規表現で処理するのが手っ取り早いと思います。

Sub Sample()
  Dim s As String
  Dim n As Long

  s = "商品A1200円"
  
  With CreateObject("VBScript.RegExp")
    .Pattern = "\d+"  '連続した数字
    With .Execute(s)
      If .Count = 0 Then
        MsgBox "文字列の中に数字がありません"
      Else
        n = .Item(0).Value
        MsgBox n
      End If
    End With
  End With
  
End Sub

【72750】Re:文字列の中の数字のみを取得
発言  UO3  - 12/9/15(土) 8:54 -

引用なし
パスワード
   ▼ドカ さん:

おはようございます
ドカさんのコードについては、他の板でもリコメンドされているように
「掲示板への回答コードとしては、必ず変数定義を行い、プロパティは明示」
これが望ましいと思いますよ。

失礼しました。

【72751】Re:文字列の中の数字のみを取得
お礼  Aoichi  - 12/9/15(土) 10:39 -

引用なし
パスワード
   ▼UO3 さん:
早速の解答有難うございました
即実行してみました
うまくいきました
有難うございました

【72752】Re:文字列の中の数字のみを取得
発言  ドカ  - 12/9/15(土) 11:09 -

引用なし
パスワード
   ▼UO3 さん お世話になります。
こんな感じでよかったでしょうか?


Option Explicit '←モジュールの先頭には この宣言を必ず。

Sub test1()
Dim myStr As String
Dim myN As String
Dim i As Long

  For i = 1 To Len(Range("a1").Value)
    myStr = Mid(Range("a1").Value, i, 1)
    If myStr Like "[0-9]" Then
      myN = myN & myStr
    End If
    Range("b1").Value = myN
  Next
End Sub

【72753】Re:文字列の中の数字のみを取得
発言  UO3  - 12/9/15(土) 11:52 -

引用なし
パスワード
   ▼ドカ さん:

いいですぇね!コードとしてわかりやすいし、かつ美しいです。

【72757】Re:文字列の中の数字のみを取得
発言  とおりすがり  - 12/9/15(土) 17:21 -

引用なし
パスワード
   こんなふうかな。
Sub test2()
  Dim myStr As String
  Dim s As String
  Dim myN As String
  Dim k As Long

  myStr = Range("A1").Value
  For k = 1 To Len(myStr)
    s = Mid(myStr, k, 1)
    If s Like "[0-9]" Then
      myN = myN & s
    End If
  Next
  Range("B1").Value = myN
End Sub

1666 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free