アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

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=ああああ(文字)

以上お手数ですがなにとぞよろしくお願いします。

A 回答 (2件)

テストはしてませんが、こういう感じの発想で上手く行くと思います。



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

こんな感じでいけそうです。
    • good
    • 0

>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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!