- 締切済み
ある数字以上のセルを見つける方法
エクセル2000でマクロを使っています。 例えば、1行目の全てのセルに1から10までのいずれかの数字が 入っている場合、5以上の数字が入っているセルを簡単に見つける 方法はありますか? ループを使って for i = 1 to 255 if cells(1,i) >= 5 then ~ end if next という方法は考えられますが、例えば1行目だけでなく2000行目 まで同じようなことを繰り返す場合、時間がかかってしまうので・・・ どなたか詳しいかた教えてください。 よろしくお願いします!
- みんなの回答 (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)
検索対象のデータが固定できるのであれば 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種類の検索ループですみそうですよ
- hosohoso13
- ベストアンサー率44% (138/313)
「見つける」と言う言葉の解釈にもよりますが、他の方法だと。 ・条件付き書式 A列ヘッダをクリック→書式→条件付き書式→「セルの値が」「次の値より大きい」「5」として、書式ボタンで好きな色を選択します。 これで5以上の数字は選んだ色で表示され、簡単に「見つけられます」。 ・オートフィルタ A1をクリックし→データ→フィルタ→オートフィルタ A1セルのドロップボタンから(オプション) 条件に5より大きいとしてOK VBAで何らかの処理をしたいのであればループを使用するしか無いと思います。2000行程度なら1秒もかからないのでは?
お礼
やはりVBAでの処理はループしかないですか。2000行ともなると結構時間かかるんですよ。 教えていただいた方法は参考にさせてもらいます。どうもありがとうございました。
補足
回答ありがとうございます。私にはない発想で驚きです。 さらに質問で申し訳ないのですが、1から10までの数字でなくて 例えば極端に1から1000000のいずれかが入っている場合で、 同様に10000以上の数字を見つけ出すとなるとループを使うと 厳しい作業になりますか?