下記の条件の元 数字のみを抽出するマクロは分かったのですが、少数点を含めるとうまく抽出できません
小数点を含む数字を抽出する方法をご教授願えませんでしょうか
条件
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.1
- 回答日時:
そのマクロがどのようにして動いているのかを理解されていないという事ですか。
セルに入力されている文字の先頭から、0から9までの連続した文字を拾ってそれを「数値」としているのです。
小数点(ピリオド)は含まれていませんよね。
…ここまで説明すれば自身で手直しできると思います。
頑張ってください。
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.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
お探しの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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBA:小数点以下の数字を取得できる関数は?
Visual Basic(VBA)
-
エクセルで小数を含む数値の抽出
その他(Microsoft Office)
-
Excelで任意の文字列から小数を含む数値を抽出するには?
Excel(エクセル)
-
-
4
エクセルで、文字列から数値だけを抽出
Excel(エクセル)
-
5
【VBA】計算結果に小数点第2位までを表示させる方法
Visual Basic(VBA)
-
6
VBAで入力数値について
Visual Basic(VBA)
-
7
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
11
VBA 小数点の存在判定
Visual Basic(VBA)
-
12
名前をつけて保存した後、元のファイルに戻るには
その他(コンピューター・テクノロジー)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
15
小数か整数かを判定する方法
Visual Basic(VBA)
-
16
関数で小数点以下を抽出したい
Excel(エクセル)
-
17
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
18
VBA 変数名に変数を使用したい。
Visual Basic(VBA)
-
19
実数の整数部,小数部の取得
Visual Basic(VBA)
-
20
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excelで連続印刷をするマクロ
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
Excel2007で、太字にした行のみ...
-
エクセルで全ての数字間にカン...
-
100行のセルの高さを一括で調整...
-
EXCEL マクロで「キーワード入...
-
wordのvbaでハイパーリンク設定...
-
エクセル VBA 小数点を含む数字...
-
エクセルで、行ごとの並び替え...
-
Excel2007 セルを右方向に削除...
-
任意の1行を選択していないと...
-
「マクロ」の足し算の式を教え...
-
yyyy/mm/ddの日付に一括変換す...
-
エクセル2000でこんなマク...
-
値貼り付けをしても書式も貼り...
-
並べ替えのマクロで対象行の範...
-
マクロまたは他の方法でで自動転記
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
条件に応じて特定の行を非表示...
-
Excelでセル内の数式は残し値だ...
-
Excel2007で、太字にした行のみ...
-
Excelで連続印刷をするマクロ
-
「マクロ」の足し算の式を教え...
-
エクセル VBA 小数点を含む数字...
-
エクセルで全ての数字間にカン...
-
(Excel2003)すぐ左の最後の行...
-
Excel(VBA)データ入力に応じて...
-
Excel にて非表示行を探すワー...
-
エクセルで、行ごとの並び替え...
-
エクセル2003でマクロをおこな...
-
excel ある部分だけをコピペし...
-
行の入れ替えってどうするの?
-
Excelで周期的に列を削除する方法
-
整数行を残し小数点の行を削除...
-
EXCEL マクロで「キーワード入...
-
VBA コピーを有効行までループ...
-
Excel2007 セルを右方向に削除...
-
wordのvbaでハイパーリンク設定...
おすすめ情報
数値による表示形式です