ここから本文です

エクセルのマクロについてです 現在私は 1,2,3,10,1... 32,4,1,0,5 ... のよ...

wat********さん

2016/8/2400:27:39

エクセルのマクロについてです
現在私は
1,2,3,10,1...
32,4,1,0,5
...
のような可変長のシート?

がありその中のセルの値が条件にあうものだけ塗りつぶす
というマクロを書こうと思っています

案としては
For
For
If 条件
Cells(i,j) を塗りつぶす
End If
Next i
Next j

のように二重ループで縦を全部塗って次の行にいって...
というようなアルゴリズムを思い浮かびました

しかしなんだかこれは効率悪いのではないかと思うのですが(直観です ですからもしかしたら知識が豊富な人でもこれが一番効率いいと見えるかもしれません)
このアルゴリズムより効率いい方法はありますか?

閲覧数:
78
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

set********さん

2016/8/2400:59:06

下記の構文でどうでしょうか?
・A1~D3の範囲を選択した状態でマクロを実行すると、範囲内でセルの値が「6」のセルを黄色に塗りつぶす構文になっています。
・なお、セルの範囲が「A1:D3」と決まっているなら、
Set Rng = Selection
の部分を、
Set Rng = Range("A1:D3")
と変更して下さい。


Sub Macro1()
Dim Rng As Range, R As Range
Set Rng = Selection
For Each R In Rng
If R.Value = 6 Then
R.Interior.ColorIndex = 6
End If
Next R
Set Rng = Nothing
End Sub

下記の構文でどうでしょうか?...

質問した人からのコメント

2016/8/24 23:45:32

なるほどそんな方法があったんですね!
目から鱗です
ありがとうございました

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

2016/8/2409:13:11

マクロなんか使わずに条件付き書式を定義する方が速いでしょ。

kei_jun_kuuさん

2016/8/2408:36:11

setuo_315さんが提示された For Each Next がFor Nextの2重ループより処理が速いです。

ただ、決められた数字に色を塗るなら、こんなやり方も。参考程度に…
ややこい条件があれば、setuo_315さんのやり方を推奨します。。

Ctrl+Hの置換ダイアログで、「6」→「6」にして、書式で「黄色の塗りつぶし」です。
10万行×6列の処理で、
For Each Next→2秒くらい
コレ→0.5秒くらい

A列~F列をまとめて処理するなら、
Selection

Columns("A:F")

Sub Sample()
Application.ReplaceFormat.Interior.ColorIndex = 6
Selection.Replace What:="6", Replacement:="6", LookAt:=xlWhole, SearchOrder _
:=xlByRows, ReplaceFormat:=True
End Sub

setuo_315さんが提示された For Each Next がFor Nextの2重ループより処理が速いです。...

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる