• 締切済み

ある数字以上のセルを見つける方法

 エクセル2000でマクロを使っています。  例えば、1行目の全てのセルに1から10までのいずれかの数字が 入っている場合、5以上の数字が入っているセルを簡単に見つける 方法はありますか? ループを使って  for i = 1 to 255    if cells(1,i) >= 5 then    ~    end if  next という方法は考えられますが、例えば1行目だけでなく2000行目 まで同じようなことを繰り返す場合、時間がかかってしまうので・・・ どなたか詳しいかた教えてください。 よろしくお願いします!  

みんなの回答

noname#262398
noname#262398
回答No.3

配列にぶち込んでしまえば、検索は速い。 ですが、実際の処理速度は、その内容によりけりなので。。。 a = Range(Cells(1, 1), Cells(2000, 255)).Value For j = 1 To 255 For i = 1 To 2000 If a(i, j) >= 10000 Then '~ End If Next Next

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

検索対象のデータが固定できるのであれば RangeオブジェクトのFindメソッドを使ってみてはいかがでしょう セル範囲が A1:A2000だとするなら Sub Test()   dim n as integer, r as Range   dim nRow as Integer   nRow = -1   for n = 5 to 10     set r = Range("A1:A2001").Find(Trim(Str(n)),Range("A2001"))     if not r is nothing then       if nRow = -1 or nRow > r.Row then         nRow = r.Row       end if     end if   next   if nRow> -1 then     ' 5以上の行が見つかった     ' ここで所望の処理   end if End Sub といった具合で "5","6","7","8","9","10" の6種類の検索ループですみそうですよ

okranta
質問者

補足

 回答ありがとうございます。私にはない発想で驚きです。 さらに質問で申し訳ないのですが、1から10までの数字でなくて 例えば極端に1から1000000のいずれかが入っている場合で、 同様に10000以上の数字を見つけ出すとなるとループを使うと 厳しい作業になりますか?

回答No.1

「見つける」と言う言葉の解釈にもよりますが、他の方法だと。 ・条件付き書式 A列ヘッダをクリック→書式→条件付き書式→「セルの値が」「次の値より大きい」「5」として、書式ボタンで好きな色を選択します。 これで5以上の数字は選んだ色で表示され、簡単に「見つけられます」。 ・オートフィルタ A1をクリックし→データ→フィルタ→オートフィルタ A1セルのドロップボタンから(オプション) 条件に5より大きいとしてOK VBAで何らかの処理をしたいのであればループを使用するしか無いと思います。2000行程度なら1秒もかからないのでは?

okranta
質問者

お礼

 やはりVBAでの処理はループしかないですか。2000行ともなると結構時間かかるんですよ。  教えていただいた方法は参考にさせてもらいます。どうもありがとうございました。

関連するQ&A