Excel VBA質問箱 IV

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

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


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

【34584】数値のみにしたい to 06/2/7(火) 16:44 質問[未読]
【34585】Re:数値のみにしたい Blue 06/2/7(火) 17:00 回答[未読]
【34586】Re:数値のみにしたい Kein 06/2/7(火) 17:12 回答[未読]
【34608】Re:数値のみにしたい to 06/2/8(水) 9:39 お礼[未読]
【34609】Re:数値のみにしたい Blue 06/2/8(水) 9:45 質問[未読]

【34584】数値のみにしたい
質問  to  - 06/2/7(火) 16:44 -

引用なし
パスワード
   (A1行目)
8.これはてすとです
(A2行目)
(3)サブです。
とかかれてます。これから、数値のみを抜き出して
8-3と表示させたい。

【34585】Re:数値のみにしたい
回答  Blue  - 06/2/7(火) 17:00 -

引用なし
パスワード
   文字列の形式が決まっているのならば、InStr関数やLeft関数やMid関数を使って抜き出せばよいのでは?

A.
> 8.これはてすとです
1 .の位置を探す -> InStr関数を利用
2 1で見つけた位置より前が数字だから、Left関数で取得する

B.
> (3)サブです。
1 (の位置を探す
2 )の位置を探す
3 1と2の間の文字がほしい数字なので、Mid関数で取得する

> 8-3
A と B で取得した文字列を - でつなぐだけ。

てなかんじで。

またVBScript.RegExpオブジェクトを使って(正規表現で)取り出す方法もありますけど。

【34586】Re:数値のみにしたい
回答  Kein  - 06/2/7(火) 17:12 -

引用なし
パスワード
   これでどうでしょーか ?

Sub MyNum()
  Dim St As String, Ret As String, Ary() As String
  Dim i As Long, j As Long
 
  St = Range("A1").Value & Range("A2").Value
  For i = 1 To Len(St)
   If IsNumeric(Mid(St, i, 1)) Then
     ReDim Preserve Ary(j)
     Ary(j) = Mid(St, i, 1)
     j = j + 1
   End If
  Next i
  Ret = Join(Ary(), "-")
  MsgBox Ret: Erase Ary
End Sub

【34608】Re:数値のみにしたい
お礼  to  - 06/2/8(水) 9:39 -

引用なし
パスワード
   ▼Kein さん:
関数をあまり知らないので、こんな方法があったのかとビックリしました
ありがとうございました。
関数も勉強した方がいいですね。

>これでどうでしょーか ?
>
>Sub MyNum()
>  Dim St As String, Ret As String, Ary() As String
>  Dim i As Long, j As Long
> 
>  St = Range("A1").Value & Range("A2").Value
>  For i = 1 To Len(St)
>   If IsNumeric(Mid(St, i, 1)) Then
>     ReDim Preserve Ary(j)
>     Ary(j) = Mid(St, i, 1)
>     j = j + 1
>   End If
>  Next i
>  Ret = Join(Ary(), "-")
>  MsgBox Ret: Erase Ary
>End Sub

【34609】Re:数値のみにしたい
質問  Blue  - 06/2/8(水) 9:45 -

引用なし
パスワード
   本当にこれでよいのでしょうか?

もしも

1234.これは1234です
(5678)サブです。2006/02/08

とあったらどうなると思いますか?

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