Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


30798 / 76733 ←次へ | 前へ→

【51197】Re:textboxに連記
発言  ichinose  - 07/9/2(日) 21:56 -

引用なし
パスワード
   ▼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

2 hits

【51176】textboxに連記 hisao 07/9/1(土) 13:08 質問
【51177】Re:textboxに連記 ぱっせんじゃー 07/9/1(土) 13:13 発言
【51181】Re:textboxに連記 ichinose 07/9/1(土) 19:21 発言
【51192】Re:textboxに連記 hisao 07/9/2(日) 19:39 発言
【51197】Re:textboxに連記 ichinose 07/9/2(日) 21:56 発言
【51206】Re:textboxに連記 hisao 07/9/3(月) 15:44 お礼

30798 / 76733 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free