| 
    
     |  | ▼ichinose さん: 
 有り難うございました。
 素晴らしいプログラム本当に助かりました
 パッセンジャーさんも有り難うございました
 
 >▼hisao さん:
 >こんばんは。
 >
 >>このような際、既にA列に入っている数字の最大値以下の数字で欠番をmsgboxに書きたい場合はどうなるのでしょうか?つまり A1からA100に入っている数字の最大値がiの場合、1からiの数字で欠番を探したいのです
 >>”少しは自分で考えろ”と叱られそうですが、配列が余り解りませんので宜しくお願い致します
 >これ、Match関数より、Countif関数の方がちょっと簡単になりますね!!
 >'=====================================================
 >Sub main()
 >  Const maxlim = 20 '←最大値
 >  Dim add As String
 >  add = "a1:a100"
 >  With Range(add)
 >    .Formula = "=int(rand()*100)+1"
 >    .Value = .Value
 >    End With
 >  '↑A1:A100にサンプル作成
 >  MsgBox Join(Filter(Application.Transpose( _
 >      Evaluate( _
 >      "IF(countif(" & add & ",ROW(a1:a" & maxlim & _
 >      "))=0,ROW(a1:a" & maxlim & _
 >      "),""×"")")), "×", False), ",")
 >End Sub
 >
 >もっとも、配列数式が嫌いなら、ループを使って同じことをしたほうが良いでしょうか
 >
 >Sub main2()
 >  Const maxlim = 20
 >  Dim add As String
 >  Dim ans() As String
 >  Dim g0 As Long, g1 As Long
 >  add = "a1:a100"
 >  'With Range(add)
 >   ' .Formula = "=int(rand()*100)+1"
 >   ' .Value = .Value
 >    'End With
 >  '↑A1:A100にサンプル作成
 >  g1 = 0
 >  For g0 = 1 To maxlim
 >    If Application.CountIf(Range(add), g0) = 0 Then
 >     ReDim Preserve ans(1 To g1 + 1)
 >     ans(g1 + 1) = g0
 >     g1 = g1 + 1
 >     End If
 >    Next
 >  If g1 > 0 Then MsgBox Join(ans(), ",")
 >End Sub
 
 |  |