[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『指定セル選択について。』(ヤイリ)
お世話になります。
例えば、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.