[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ループ処理』(トム)
お世話になります。
冶具の管理をしていますが、年度末に向け廃棄冶具の選定をするために
ご教授お願いいたします。
行数は約60000行で最小4行、最大18行で19行間隔で作表してあります。
データの範囲はA2からX20以降19行間隔であります。
X行に貸し出し回数が有り、貸し出し回数の少ないものが廃棄対象になるので
色を付けて見やすくしたいと思っております。
貸しだし回数が
1なら赤で太文字
2なら青で太文字
3なら黄で太文字
4と5は緑で太文字
この時L列からX列まで上記の条件で処理をしたいのですが可能でしょうか?
宜しくお願い致します。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
条件付書式でできると思います。 60000行もあると、ループでは時間かかりますよ。 (TAKA) 2019/01/07(月) 14:17
時間は掛かっても構わないのでマクロでお願いしたいのですが・・・
どの様に処理するかを勉強したいのでお願いします。
(トム) 2019/01/07(月) 15:15
Dim c As Range, r As Range Columns("L:X").Font.ColorIndex = xlAutomatic Columns("L:X").Font.Bold = False For Each c In Range("X:X").SpecialCells(2, 1) Set r = c.Offset(, -12).Resize(, 13) Select Case c.Value Case 1: r.Font.Color = vbRed: r.Font.Bold = True Case 2: r.Font.Color = vbBlue: r.Font.Bold = True Case 3: r.Font.Color = vbYellow: r.Font.Bold = True Case 4, 5: r.Font.Color = vbGreen: r.Font.Bold = True End Select Next c End Sub (mm) 2019/01/07(月) 15:47
ループ処理せずに一気に処理するとは考えていませんでした。
表を一つのブロックとして考えていたもので驚きました。
結果は満足ですが、for nextのコードも勉強の為に見たい気もします。
可能であれば教えて頂けると助かります。
(トム) 2019/01/07(月) 18:01
For Each c 〜 ・・・ next c
で、for nextで処理していますが。
(mm) 2019/01/07(月) 18:13
60,000行って結構ありますね・・・ mmさんのコードでも、一回フリーズしちゃいやした。
For〜Nextステートメントですが、セルをバリバリやると時間かかりそうだったので、 Unionでまとめました。 連続したセル範囲だと60,000行問題なくできましたが、 飛び地を入れていくと途中でフリーズしてしまうので 1,000行ごとに処理にしました。
色付けると、ものすごく見えにくいですね。 いっそ貸出回数が少ないものを別のシートにまとめてはどうですか?
Sub 色付け() Dim i As Long Dim w As Variant Dim rng(1 To 5) As Range Dim j As Long w = Range("X1", Cells(Rows.Count, "X").End(xlUp)).Value Columns("L:X").Font.ColorIndex = xlAutomatic Columns("L:X").Font.Bold = False For i = 2 To 60000 Select Case w(i, 1) Case 1, 2, 3, 4, 5 If rng(w(i, 1)) Is Nothing Then Set rng(w(i, 1)) = Range(Cells(i, "L"), Cells(i, "X")) Else Set rng(w(i, 1)) = Union(Range(Cells(i, "L"), Cells(i, "X")), rng(w(i, 1))) End If Case Else '何もしない End Select 'If i Mod 500 = 0 Then Stop If i Mod 1000 = 0 Then For j = 1 To 5 If Not rng(j) Is Nothing Then With rng(j).Font .Color = Array("dummy", vbRed, vbBlue, vbYellow, vbGreen, vbGreen)(j) .Bold = True End With Set rng(j) = Nothing End If Next j DoEvents End If Next i End Sub
(稲葉) 2019/01/07(月) 19:32
(マナ) 2019/01/07(月) 19:45
マナさん 表が提示されてないので確証はないのですが、 矩形の表が何段にも重なっているのではないかな、と 推測してます。
それでもフィールド名さえあれば行けそうですけどねー (稲葉) 2019/01/07(月) 20:33
1)L列からX列全体を選んでフィルタ
2)X列が1を抽出
3)文字を赤で太字
4)X列が2を抽出
5)文字を青で太字
のような感じで繰り返して
1行目がフィールド名でもデータでも
とりあえず無視、最後にあるべき色に修正。
手作業だと2分くらいできそうに思ったのですが。
(マナ) 2019/01/07(月) 21:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.