[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定セル選択について。』(ヤイリ)
お世話になります。
例えば、Aセルの数値が、1000以下の場合
そのセルをすべて選択する(1つ1つでなく一気に)
または
そのヒットした行をすべて選択することは可能でしょうか?
よろしくお願い致します。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
「選択出来た」としてその後どうしたいのでしょうか?
(まっつわん) 2017/07/18(火) 13:04
なるほど、、、
オートフィルターを使う方法がよさそうですね。
ちなみに、条件付き書式設定ではなぜいけないのか、
後学のために教えていただけないでしょうか?
(まっつわん) 2017/07/18(火) 14:57
(ヤイリ) 2017/07/18(火) 15:02
試してみたけど、マクロで範囲選択は厳しいかもしれないですね。 よくわからないけど、めっちゃSelectに時間掛かった。
色を塗るだけなら、100行ごとにして処理速度早くできたけど、Selectは分割できますかね?
Option Explicit Sub mk_Sample() With Range("A1:A10000") .Formula = "=RANDBETWEEN(1,20)*100" .Value = .Value End With End Sub Sub ya() Dim F As String Dim rw As Variant Dim r As Range F = "=TRANSPOSE(IF(A1:A■<=1000,ROW(A1:A■),CHAR(2)))" F = Application.WorksheetFunction.Substitute(F, "■", Cells(Rows.Count, "A").End(xlUp).Row) For Each rw In Filter(Application.Evaluate(F), Chr(2), False) If r Is Nothing Then Set r = Cells(rw, "A") Else Set r = Union(r, Cells(rw, "A")) End If ' If r.CountLarge > 100 Then ' exe r ' Set r = Nothing ' End If Next rw Dim t As Double t = Timer r.Select MsgBox Format(Timer - t, "ss") End Sub Private Sub exe(r As Range) r.Interior.Color = vbRed End Sub (稲葉) 2017/07/18(火) 18:15
書き込んだ後思いついたら、思ったより早かった。 Private Sub exe(r As Range) Union(r, Selection).Select End Sub
と、間違い訂正 >MsgBox Format(Timer - t, "ss") MsgBox Timer - t (稲葉) 2017/07/18(火) 18:19
バグがあったので全面差し替えで・・・ Sub ya() Dim F As String Dim rw As Variant Dim r As Range F = "=TRANSPOSE(IF(A1:A■<=1000,ROW(A1:A■),CHAR(2)))" F = Application.WorksheetFunction.Substitute(F, "■", Cells(Rows.Count, "A").End(xlUp).Row) Range("B1").Select For Each rw In Filter(Application.Evaluate(F), Chr(2), False) If r Is Nothing Then Set r = Cells(rw, "A") Else Set r = Union(r, Cells(rw, "A")) End If If r.Count > 100 Then exe r End If Next rw If Not r Is Nothing Then exe r End If MsgBox "完了" End Sub Private Sub exe(ByRef r As Range) If Intersect(Selection, Range("A:A")) Is Nothing Then r.Select Else Union(r, Selection).Select End If Set r = Nothing End Sub (稲葉) 2017/07/18(火) 18:26
調べたら直接判定した数値に
カラーを付けられる
みたいでしたので
こんな感じにサンプルにしてみました。
またなにかありましたらお願いします。
Sub mainstream()
Cells.Interior.ColorIndex = 0
Dim i As Variant Dim Max As Long
Max = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To Max
If ActiveSheet.Cells(i, 1).Value < 1000 Then Range(Cells(i, 1), Cells(i, 1)).Interior.ColorIndex = 38 End If
Next i
End Sub
(ヤイリ) 2017/07/20(木) 14:54
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.