エクセルで連続した数字を抜き出す方法

このQ&Aのポイント
  • エクセルで連続した3桁の数字を抜き出す方法を教えてください。
  • データの中から連続した3桁の数字のみを抜き出して、別の列に入力する方法を教えてください。
  • エクセルで大量のデータから連続した3桁の数字を抜き出す方法を知りたいです。
回答を見る
  • ベストアンサー

エクセルで連続した数字を抜き出す

エクセルでの作業で困っています。 エクセルのある列からデータを取得して、その中から連続した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 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答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
質問者

お礼

sacchi_julです。 修正版まで考えていただき、ありがとうございます。 merlionXXさんの想定されたケースまでは、想定していませんでいた。 確かに、こういたデータを扱うケースもあると思います。 助かりました。 ありがとうございました。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答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

sacchi_jul
質問者

お礼

sacchi_julです。 お早いお返事ありがとうございます。 大変助かりました!

関連するQ&A

  • エクセルで連続している数字について

    エクセルで質問です。 A列に連続して並んでいる数字の中に、 歯抜けになっている数字があります。 例) 1 2 3 5 9 10 11 13 ・ ・ ・ 抜けている数字の箇所に空白のセルを挿入したいのですが、 どうすれば良いのでしょうか? 初歩的な質問ですいません。 宜しくお願い致します。

  • エクセルの数字の桁数

    エクセル2000です。 3000行程のデータです。横に並べた3つのセル(A~C列)の数字をひとつのセルにまとめてD列に表示しようと思います。希望はゼロも含めて8桁の番号10036803にしたいのですが、ゼロがとれて13683になってしまいます。 なお、Dのセルには=A1&B1&C1としています。    A  B  C    D  1 1 00368 03  10036803 よろしくお願いします。

  • エクセルの質問。同じ数字なら違う列の数字を返す

    エクセルについて質問です。 A列は数字が入力されていて、B列はある数字があります。C列にB列と同じような数字を入力していきます。入力したC列の数字が、B列の中にあれば、入力した行にA列の数字をD列に返すことは出来ますか?下記に例を記載します。 A     B     C       D 0   20110210   2010811       1   20110214   20101025   2   20110215   2011111    7 3   20110216   2011322  4   20110217   2011516   6   20110221   2011325   7   2011111    20101220   8   20050223   2011128   宜しくお願いします。

  • Excelで規則性を持った連続する数字を入れたい

    Excelで、規則性を持った連続した数字を入れたい場合はどうすればよいのでしょうか。 例えば列に、上から1,1,1,1,2,2,2,2,3,3,3,3と入れるとします。それを下に順に4,4,4,4,5,5,5,5,・・・・と入るようにしたいのですが、手で打っていく以外に何か良い方法はないでしょうか。

  • 2007 エクセルで〇の中数字をいれて連続データーできない?

    教えて下さい。 2007エクセルで〇の中に数字を入れて連続データーができますか? 例、(1)(2)(3)(4)・・・・←本当は〇です 不可能な事なのでしょうか? 宜しくお願いします。

  • エクセルで、頭に0をつけて数字の桁を揃える方法

    エクセルで、必ず5桁の数字を入れる列があるとします。 ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。 任意文字として5桁の数字にしたいのですが、 何かいい方法はありませんでしょうか? 例) A列 A列 50      00050 1000  ⇒  01000 11111    11111 どうぞよろしくお願いいたします。

  • Excelで連続数字をカウント

    1~3までの数字がA列にランダムに入力されています。 例) A -- 3 2 2 1 2 1 3 2 2 別のシートに、「1」「2」「3」と縦にそれぞれ行を分け、横列にはそれぞれの連続回数(1,2,3,4,5,6,7,8・・・) を入力させたいです。 「1」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・ 「2」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・ 「3」の1回が⚪︎⚪︎回、2連続が⚪︎⚪︎回、3連続が⚪︎⚪︎回・・・

  • エクセルで連続している数字の分類をする。

    エクセルにて、   A B C 一  二 2 3 5 三 2 5 4 四 1 5 4 五 5 5 2 六  このように、試験の解答の集計をしており、A,B,C列のそれぞれで、連続した数字のセット個数を数えたい。その中で、A列の2が連続している2連続と、B列の5が3連続している物とを、分けてカウントしたい、また、その二つをかぶらせずに別のものとしてカウントしたいのですが、どのようにしたらいいか、アドバイスを頂ければ嬉しいです。(2連続と3連続のカウント数を別のところで集計してます。) (3つ以上は連続したものがありません。2連続か、3連続のどちらかです。 しかし、数字のパターンが1~5の選択問題の為、5パターンあります。) ちなみに、今使っている物は ROUNDDOWN(SUMPRODUCT((A2:A5<>"")*SIGN((A2:A5=A3:A6)+(A2:A5=A1:A4)))/2,0) という式を使って数えているのですが、B列の5のように3連続が2つきてしまうと、数が2つ増えてしまい、切り捨てできずに1増えてしまう状態です。 お手数ですが、ご回答のほどよろしくお願いします。

  • エクセルで指定した数字を含む検索について

    初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!初歩的な質問で申し訳ございません。 添付のような表があり、現在はA列にオートフィルタをかけて数字下二桁を入力後、ソートがかかった商品表示され、日付の 列に個数の入力を行っています。(A列の番号は20桁位あるので、実際は下4桁で検索しています。) 【現在の作業】 A列にオートフィルタから下4桁入力後に検索→日付の列に個数を入力→また検索 【理想の作業】 ある程度、検索する商品の番号の下4桁をどこかに候補として挙げ、その数字を含む行だけ表示→一気に個数だけ入力 VBAでもマクロの記録でも何かよい方法はございませんでしょうか? イメージとしては、1行目から5行目にあるオレンジのボックスの中に検索したい商品の番号4桁をいくつか入力し、それに該当する商品だけを7行目のA列から検索し、その枠ごとに記載された数字を含む行のみソートされ表示されるようにできると助かります。 どうぞよろしく御願いいたします!

  • エクセルで自動的に連続番号が入るようにしたいのですが、例えば規則的に1

    エクセルで自動的に連続番号が入るようにしたいのですが、例えば規則的に1.2.3と並んでいる番号表(下記の左たて列)を、もし途中で4と入力したら(真ん中たて列))次は5と自動的に入るようにしたいのですが、どうすればよいでしょうか。もし1.2.3.4.5と並んでいる列を、途中で1と入力したら(下記右たて列)、1.2.3.1.2となるようにしたいのです。 セルを選んで下方にドローして連続データを作成するのではなく、もともと入っている数字を自動的に変更できる方法が知りたいです。 111 242 353 461 572