
下記の条件の元 数字のみを抽出するマクロは分かったのですが、少数点を含めるとうまく抽出できません
小数点を含む数字を抽出する方法をご教授願えませんでしょうか
条件
B11-B15セルに下記のように記載がある
±3.0%
±1.5%
±8.0%
±4.5%
±4.0%
これをD11-D15セルに小数点を含む数字だけを抽出したい
数値抽出マクロ
Sub Sample1()
Dim i As Long, k As Long, myStr As String
For i = 11 To 15 '//←11行目~15行目まで//
For k = 1 To Len(Cells(i, "B"))
If Mid(StrConv(Cells(i, "B"), vbNarrow), k, 1) Like "[0-9]" Then
myStr = myStr & Mid(Cells(i, "B"), k, 1)
Else
Exit For
End If
Next k
Cells(i, "D") = myStr
myStr = ""
Next i
End Sub

No.4ベストアンサー
- 回答日時:
あなたが提供されたマクロを修正するとかなり手をいれることになりましたので、作り直しました。
以下のマクロを標準モジュールに登録してください。
Option Explicit
Sub Sample1()
Dim row As Long
Dim i As Long
Dim str As String
Dim ostr As String
Dim RE As Object
Dim match
Dim ptn As String
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = "\d+\.\d+"
For row = 11 To 15
str = Cells(row, "B").Text
Set match = RE.Execute(str)
If match.Count > 0 Then
Cells(row, "D").Value = match(0)
End If
Next
End Sub

No.3
- 回答日時:
こんにちは。
元のコードは、ここの回答者のものですね。
>数値による表示形式です
そうなのですか?±記号は、書式で入れているという意味になりますが。
修正点
「.」を0-9の後に入れる
If Mid(StrConv(Cells(i, "B"), vbNarrow), k, 1) Like "[0-9.]" Then
この2行を取る
Else
Exit For
それで当面、それでよいような気がします。
欲を言えば、Cells(i, "B") →Cells(i, "B").Text にした方が安心できそうです。
他のコードにも興味があれば、しばらく開けておいてください。
No.1
- 回答日時:
そのマクロがどのようにして動いているのかを理解されていないという事ですか。
セルに入力されている文字の先頭から、0から9までの連続した文字を拾ってそれを「数値」としているのです。
小数点(ピリオド)は含まれていませんよね。
…ここまで説明すれば自身で手直しできると思います。
頑張ってください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
Excelで任意の文字列から小数を含む数値を抽出するには?
Excel(エクセル)
-
エクセルで小数を含む数値の抽出
その他(Microsoft Office)
-
-
4
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
5
VBAで入力数値について
Visual Basic(VBA)
-
6
関数で小数点以下を抽出したい
Excel(エクセル)
-
7
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
8
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
9
UserForm1.Showでエラーになります。
工学
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
12
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
15
Excel VBA 半角英数の抽出もしくは全角文字の削除
Excel(エクセル)
-
16
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
17
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
18
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
19
for next の不連続版があるでしょうか
その他(Microsoft Office)
-
20
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
マクロで教えてください。
-
Excelアルファベットを含む数値...
-
excel ある部分だけをコピペし...
-
VBA シングルクォーテーション...
-
Excel 2003のマクロについて
-
Excel にて非表示行を探すワー...
-
ハイパーリンクからアドレスを...
-
昨日、エクセルVBAで、隣のセル...
-
エクセルのマクロ
-
Excel(VBA)データ入力に応じて...
-
条件に応じて特定の行を非表示...
-
エクセルのマクロについて質問...
-
特定のセルだけ結果がおかしい...
-
前の(左隣の)シートを連続参...
-
エクセルの複数シートの保護を...
-
別シート参照のセルをシート毎...
-
VBAでシートコピー後、シート名...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前シートを参照して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2007で、太字にした行のみ...
-
Excel にて非表示行を探すワー...
-
条件に応じて特定の行を非表示...
-
excel ある部分だけをコピペし...
-
エクセルで全ての数字間にカン...
-
エクセル VBA 小数点を含む数字...
-
Excel2007 セルを右方向に削除...
-
値貼り付けをしても書式も貼り...
-
Excel(VBA)データ入力に応じて...
-
「マクロ」の足し算の式を教え...
-
Excelでセル内の数式は残し値だ...
-
wordのvbaでハイパーリンク設定...
-
エクセル2003でマクロをおこな...
-
VBA コピーを有効行までループ...
-
エクセルで特定の行を消して間...
-
EXCEL マクロで「キーワード入...
-
エクセル マクロ オートシェ...
-
yyyy/mm/ddの日付に一括変換す...
-
Excelで周期的に列を削除する方法
-
並べ替えのマクロで対象行の範...
おすすめ情報
数値による表示形式です