[[20170718113604]] 『指定セル選択について。』(ヤイリ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『指定セル選択について。』(ヤイリ)

お世話になります。
例えば、Aセルの数値が、1000以下の場合
そのセルをすべて選択する(1つ1つでなく一気に)
または
そのヒットした行をすべて選択することは可能でしょうか?
よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


文字列ならば、検索結果をまとめて表示する手があるのですが、数値ですよねぇ。そうなると、オートフィルタを設定し、必要な値だけ表示してから範囲選択、でいかがでしょうか。
(???) 2017/07/18(火) 11:46

ども^^

「選択出来た」としてその後どうしたいのでしょうか?

(まっつわん) 2017/07/18(火) 13:04


選択した後に、色を塗りたかったのですが
条件書式等使用せずに
関数・もしくはシンプルな方法で
範囲選択をしたいと思い
投稿させて頂きました。
(ヤイリ) 2017/07/18(火) 13:50

>選択した後に、色を塗りたかったのですが
>条件書式等使用せずに

なるほど、、、
オートフィルターを使う方法がよさそうですね。

ちなみに、条件付き書式設定ではなぜいけないのか、
後学のために教えていただけないでしょうか?
(まっつわん) 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

???さん。
ありがとうございます。
オートフィルター検討させていただきます。
稲葉さん。
コードご提示ありがとうございます。
数値判定のセル選択をマクロで出来るんですね。
確かに、こちらですと
Excelファイルが、複数ある場合
作業効率は向上します。
ご丁寧にありがとうございました。
(ヤイリ) 2017/07/19(水) 10:19

お世話になります。

調べたら直接判定した数値に
カラーを付けられる
みたいでしたので
こんな感じにサンプルにしてみました。

またなにかありましたらお願いします。

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.