• ベストアンサー

VBA で選択した範囲に入力されている数字がきちんと順番通り存在しているか確認したい

お世話になります。 VBAで質問させてください。 EXCELであるシートのA1~A5の中に1から順番で数字が存在しています。 その中の数字がきちんと通し番号で存在しているのか調べたいのですが どのようにすればよいでしょうか ※各セルは、必ず数字だけが存在しているのではなく、文字や空白のセルも存在します。 ※数字の初めは必ず1ですが、終わりの数字はわかりません。 例1 数字が通しで1~3が存在しているのでOK A1=3 A2=なし(空白) A3=2 A4=ああああ(文字) A5=1 例1 数字が通しで2がとばされているのでNG A1=3 A2=なし(空白) A3=4 A4=1 A5=ああああ(文字) 以上お手数ですがなにとぞよろしくお願いします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

テストはしてませんが、こういう感じの発想で上手く行くと思います。 Range("A5").Select '--->検索開始のセルを選択、上に検索するとする Dat_A = 1 '--->検索開始の数値 Do  Selection.Offset(-1).Select  IF IsNumber(Selection.Value) Then   Dat_B = CDbl(Selection.Value)   IF Dat_B = Dat_A + 1 Then '-->順次増えているかどうかのチェック    Dat_B = Dat_A    Dat_M = "OK"   elseIf    Dat_M = "NG" '-->狂っていればメッセージにNGをセットしてループアウト    exit Do   end if  end if Loop While Selection.Address = "A1" '-->検索終了のセル MsgBox Dat_M こんな感じでいけそうです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>EXCELであるシートのA1~A5の中に1から順番で数字が存在しています。 With Application   maxnum = .Max(Range("A1:A5"))   For i = 1 To maxnum     If IsError(.Match(i, Range("A1:A5"), 0)) Then       MsgBox i & " が有りません", 16     End If   Next End With >VBA で選択した範囲に入力されている数字がきちんと順番通り With Application   minnum = .Min(Selection)   maxnum = .Max(Selection)   For i = minnum To maxnum     If IsError(.Match(i, Selection, 0)) Then       MsgBox i & " が有りません", 16     End If   Next End With

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでの選択範囲内の削除方法。

    Excel2003でVBAを使っています。 まず、VBAである範囲(例えば、A1からK20)を指定した後、その範囲内にある値の中で、aaaとbbb以外の値のセルを空白セルにしたいのですが、どのようにしたらよいのでしょうか? aaaとbbbの入っているセルを空白セルにする場合と、aaaとbbb以外の値が入っているセルを空白セルにする方法を教えてください。 宜しくお願いします。

  • EXCEL VBA 空白行を含んだ範囲選択

    EXCEL VBA超初心者です。 EXCELのVBAについての質問です。 以下のような、日ごとのお金の貸付、返済の一覧データがあります。 例 A B C D E 1 年  月 日 貸付  返済 2 2008 5 10 10000 3 2008 6 10      8000 4 2008 7 10 20000 5 2008 8 20      7000 ・データの行数は決まっていません。 ・最後の行が「貸付」で終わることもありますし 例のように「入金」で終わることもあります。 ・各データには必ず「年」「月」「日」が入力してあります。 VBAで、A2セルからE5セルを範囲選択するには どのように記述したらいいですか? ちなみに自分で色々と調べてみて Selection.SpecialCells(xlCellTypeConstants, 23).Select としたのですが それだと空白セル(例でいうとE2やD3セル)が選択されず とびとびになってしまいました。 ご教授お願いいたします!

  • 特定のセルに数字を入力すると特定の文字を表記VBA

    (1)セルG9には「ドラム缶   缶」と表記されています。ここに数字のみを入力すると「ドラム缶  〇 缶(〇は先ほど入力した数字)を自動表記し、「ドラム缶 〇  缶」と表記された文字をデリートボタン等で消したら、再び「ドラム缶   缶」と自動表記するVBAはありますか? セルF9には、G9の「ドラム缶 〇  缶」の〇の数字に200を掛けて、「○○○L」と自動表記させたいのですが、どの様にVBAを書けば良いですか?G9が「ドラム缶   缶」と数字が表記されている時はF9も「   L」と空白表記させたいです。 (2)セルG11には「20L缶   缶」と表記されています。ここに数字のみを入力すると「20L缶  〇 缶(〇は先ほど入力した数字)を自動表記し、「20L缶 〇  缶」と表記された文字をデリートボタン等で消したら、再び「20L缶   缶」と自動表記するVBAはありますか? セルF11には、G11の「20L缶 〇  缶」の〇の数字と一緒の数字「○L」と自動表記させたいのですが、どの様にVBAを書けば良いですか?G11が「20L缶    缶」と数字が表記されていない時はF11も「   L」と空白表記させたいです。 (3)セルG29には「        L」と表記されています。ここに数字を入力すると「   〇     L(〇は先ほど入力した数字)を自動表記し、「    〇    L」と表記された文字をデリートボタン等で消したら、再び「        L」と自動表記するVBAはありますか? セルF29には、G29の「        L」と全く一緒に連動した文字(ここでは「        L」)を自動表記させたいのですが、VBAではどの様にすれば良いですか?

  • VBAで複数列セルに入力されている文字を一行に

    こんにちは。VBAにて下記イメージの複数列セルに入力されている文字を一行に変換しメモに出力すると同時に出力された一行の文字列をコピーした状態にしたいです。セルに記載された文字は「,」カンマで区切った状態で範囲はA3セルからA50位となります。また、セルが結合されていたり空白が存在したり様々です。大変申し訳御座いませんがご教授宜しくお願いします。 あああ → あああ,いいい,ううう,えええ,おおお・・・ いいい ううう  えええ おおお ・ ・ ・

  • エクセル2003VBAで選択範囲

    いつもお世話になっています。 エクセル2003を使用しております。下記を関数又はVBAの組み方・構文を教えて下さい。 (1)E列には、「1」と「.」と「空白」が入っています(「1」が入ってないケースもあります)が、「1」を検索します。もし「1」が無ければ、J列を同様に検索します。(中身はE列と同じです) (2)「1」が入っているセルから見て、「行」の±10の範囲内を選択し、別シートにコピーする。 例1. 1が入っているセルが、「E15」とします。 この場合、コピーしたい範囲は、5行目全部~25行目全部です。 例2. 1が入っているセルが、「E17」とします。 この場合、コピーしたい範囲は、7行目全部~27行目全部です。 分かりにくいかもしれませんが、よろしくお願いします。

  • Excelマクロ&VBAで一列に3行ごとに数字を入力

    Excelのマクロ&VBAで、例えばA1セルからA120セルに数字1から40を3行ごとに「111・222・333・444・・・・・・・・・・・・393939・404040」と入力する。

  • VBA (条件付セルの選択、貼り付け)

    よろしくお願いします。 下記のような処理を大量データに対して行うVBAを書きたいのですが、なかなか上手くできません。 手順としては、 (1)空白セルを選択肢する。 (2)1つ上のセルを選択する (3)空白セルに貼り付ける。 (4)繰り返す。 だとおもうのですが、なかなか上手くVBAが書けません。  A          A 12003     12003 2         22003 3         32003 42005 ⇒   42005 5         52005 6         62005 7         72005 81999     81999 :         : :         :        よろしくお願いします。

  • excelのセルに追加で数字を入力するには

    エクセルのセルの入力してある数字の頭に追加で数字を入力できる関数はありますでしょうか? 手入力では量が膨大ですので何かいい案があれば教えて頂きたいです。 尚、私はVBAは使えません。 例 セルA1に100と入っている その100の頭に9を追加したい→9100としたい 宜しくお願い致します。

  • 入力された数字から条件に合う数字を抽出する方法

    どなたかご存じでしたらご回答をよろしくお願いします。 【質問】  (1)に1~43迄の数字のうち、好きな数字を7つ入力する(重複無し)と、  選択数字範囲の1~43から、(2)の条件(入力数字の±1の数字)に該当する数字を  取得して表示する。また、(3)の条件(入力数字と下1桁が同じ数字)に該当する数字  を取得して表示する。にはどうやればよいですか? 【例】  (1)入力数字(セル:A1~A7)  08 24 28 30 38 41 32 (2)入力数字の±1の数字。(セル:A3~Z3に左から昇順で並べる。)  07 09 23 25 27 29 31 33 37 39 40 42 (3)入力数字と下1桁が同じ数字。(セル:A5~Z5に左から昇順で並べる。)  01 02 04 10 11 12 14 18 20 21 22 34 ■選択数字範囲:1~43。(セル:A7~A49) 【注意事項】  ・使用するエクセルは2010です。  ・選択数字範囲は1~43です。  ・例 (1),(2),(3)に出てくる数字は文字表現していますが、実際には数値です。 以上、よろしくお願いします。

  • エクセルのVBAでの自動的に数字を入れ込む方法

    ご質問です。 エクセルのVBAで、セルAに縦に数字が入っているとして、 セルAの縦の数字が固有の時には、セルBには数字の1を。 セルAの縦の数字が同じ場合には、セルBには1からの数字の連番を。 入れていくには、どのような関数を書けばよろしいでしょうか? ご存知の方、いらっしゃればどうかご教授ください。 ---------------------------------------- セルA   |セルB | 828113341 | 1  |  828113342 | 1  |  828113342 | 2  |  828113342 | 3  |  828113343 | 1  |  828113344 | 1  |  828113344 | 2  |  828113345 | 1  |  ・ ・ ・ ---------------------------------------- 宜しくお願いいたします。