|
▼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
|
|