![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルでの作業で困っています。
エクセルのある列からデータを取得して、その中から連続した3桁の数字のみを抜き出して隣の列に入力するという作業を行っています。
しかし、大変量が多いので早くできるようにマクロで行いたいのですが、コーディングの仕方がわかりません。
どなたか、ご教授願えないでしょうか?
よろしくお願いします。
例
1.A列の以下データを取得する
S741T
154D_D15.5_D13
151ZZ_D18.5_D16
S154ZZZ3
S743DZ
743CHR
S111D_cov
2.連続した3桁の数字のみを抜き出してB列に入力する
741
154
151
154
743
743
111
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1です。
質問のサンプルでは、先程ので大丈夫でしたが、仮に
S15AB422XXXのような、連続した3桁の数字の前にも数字がある場合はただしく抜き出せないので修正しました。
Sub TEST02()
Dim x As Integer, i As Integer, F As Integer, n As Long, s As String
Dim base As Range
With ActiveSheet
Set base = .Range("A1") '基準点
Do Until base.Offset(n) = "" '基準点以下にデータのある限り続ける
s = ""
F = 0
x = Len(base.Offset(n)) '文字数取得
For i = 1 To x '1から文字数分まで
If IsNumeric(Mid(base.Offset(n), i, 1)) Then '数字だったら
s = s & Mid(base.Offset(n), i, 1) '控えておく
F = F + 1 '数字カウント
If F = 3 Then '数字カウント3で
.Cells(n + 1, 2).NumberFormatLocal = "@" '頭の0が消えないよう文字列に
.Cells(n + 1, 2) = s '隣に代入
Exit For '抜ける
End If
Else
s = ""
F = 0
End If
Next '繰り返し
n = n + 1 'カウント
Loop '繰り返し
End With
End Sub
sacchi_julです。
修正版まで考えていただき、ありがとうございます。
merlionXXさんの想定されたケースまでは、想定していませんでいた。
確かに、こういたデータを扱うケースもあると思います。
助かりました。
ありがとうございました。
No.1
- 回答日時:
こんな感じででしょうか。
Sub TEST01()
Dim x As Integer, i As Integer, F As Integer, n As Long, s As String
Dim base As Range
With ActiveSheet
Set base = .Range("A1") '基準点
Do Until base.Offset(n) = "" '基準点以下にデータのある限り続ける
s = ""
F = 0
x = Len(base.Offset(n)) '文字数取得
For i = 1 To x '1から文字数分まで
If IsNumeric(Mid(base.Offset(n), i, 1)) Then '数字だったら
s = s & Mid(base.Offset(n), i, 1) '控えておく
F = F + 1 '数字カウント
If F = 3 Then '数字カウント3で
.Cells(n + 1, 2).NumberFormatLocal = "@" '頭の0が消えないよう文字列に
.Cells(n + 1, 2) = s '隣に代入
Exit For '抜ける
End If
End If
Next '繰り返し
n = n + 1 'カウント
Loop '繰り返し
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】複数列ごとに取得するセルを変更したい 2 2023/03/23 21:04
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) Excel教えてください。 下記のことが出来るのは、マクロですか?条件付き書式でしょうか、、?知恵を 5 2022/11/12 09:33
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
WEB上の表の列コピー選択方法は?
-
一つのシートの中に複数のペー...
-
Excel 表から値をさがして隣の...
-
Excelの数式のコピーで列移動で...
-
【エクセル】行挿入で数式もい...
-
エクセルで作成した縦に長い表...
-
オートフィルタのリストを順番...
-
メモ帳からエクセルに貼り付け...
-
エクセルVBAコピー
-
Excelピボットテーブルで 総計...
-
エクセルのリストから欠番を拾...
-
マクロを強制的に有効にする方法
-
Excel:複数の会合の受付。会費...
-
エクセルVBAで、行コピーを複数...
-
エクセルの関数の使い方 繰越...
-
【エクセル】行や列の入れ替え...
-
エクセルでのデータ抽出
-
エクセルの列幅
-
excelの表をwordに変換する方法...
-
エクセルで連続した数字を抜き出す
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つのシートの中に複数のペー...
-
オートフィルタのリストを順番...
-
WEB上の表の列コピー選択方法は?
-
エクセルで作成した縦に長い表...
-
【エクセル】行挿入で数式もい...
-
ピボットテーブル→参照が正しく...
-
エクセルVBAで、行コピーを複数...
-
メモ帳からエクセルに貼り付け...
-
Excelピボットテーブルで 総計...
-
エクセルのリストから欠番を拾...
-
Excel 表から値をさがして隣の...
-
Excelの数式のコピーで列移動で...
-
エクセルの関数の使い方 繰越...
-
エクセルの列幅
-
Excelで検索結果をテキストボッ...
-
一太郎にエクセルの表を貼り付...
-
エクセルに詳しい方、助けてく...
-
地番を順に並べたい。
-
マクロを強制的に有効にする方法
-
ワードでアンケートの集計をし...
おすすめ情報