- ベストアンサー
エクセルの24行毎にカラーの背景色を出したい。
エクセルを使って、1日24時間毎の数値を整理しています。 1日のお終りを意味する24行目をカラーにすると 見やすくなるため、24行目毎にカラーの背景色を出したいのです。 1回の設定で約9000行(1年365日×24時間分)の表に カラーをつける方法を教えていただければ 助かります。 カラーは、薄い緑とか、青をイメージしています。 (過去の質問を見ましたが、ありませんでした)
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
マクロや条件付書式設定が順当な方法だとは思いますが データ量が多くなると結構負荷が掛ってしまいます。 (9000件ならある程度パワーのあるPCなら大丈夫とは思いますが) 今後該当EXCELブックにシートや計算式の追加が有るのであれば 単純に書式設定をされた方が良いと思われます。 データ内容的に全ての行が同じ書式で有ると思われますので 以下の方法がお薦めです 1)1行目からデータが入力されているとして・・ 24行目の色をつけたいセル範囲を選択し、書式設定でパターン色を設定します 2)1~24行を行番号で範囲選択し、右クリックでコピーを選択 3)25~8784行(366*24)を行番号で範囲選択し行番号上で右クリックし [形式を選択して貼り付け]で[書式]を指定し[OK]をクリック
その他の回答 (7)
- comv
- ベストアンサー率52% (322/612)
書き込み時には、記事#5までだたのですが 送信時に確認しないでUPしたために・・・ #6xxsadayanxxさんの記載と完全にかぶった内容で UPしてしまいました 失礼しました。
- comv
- ベストアンサー率52% (322/612)
こんにちは 9000行に対して、一定間隔で不変的な塗つぶしを 設定するのでしたら、直接的な設定の方がよろしいかと 思います。 最初の24行目を書式設定で好きなカラーで塗った後 ・その1~24行を選択コピー ・直下行(25行目)を選択した後 [Ctrl]+[Shift] をおしたまま [↓]キー で空き行がない限りデータ最終行まで選択されます。 ・その状態で 編集 形式を選択した貼り付け 書式 で24行毎の塗つぶしの書式が複写されます。
お礼
comv 様 comv様の方法が一番簡単でやりやすいことを #6の回答者様のテストで確認できました。 まことに、気が引けますが、時間的に早い方に ポイントを差し上げることにしますので、 お気を悪くお思いにならないでください。 お世話になり、お時間をとらせてすみませんでした。 そして、ご回答をありがとうございました。
- nishi6
- ベストアンサー率67% (869/1280)
これだけの行数があると条件付き書式を使うのは考えてしまいますね。 条件付き書式の判定についてはRow()なので、計算負荷は余りないかもしれませんが、色を付ける列数が増えれば、このためにファイル容量がどんどん増えていく可能性があります。(全体の23/24についてはある意味、無意味?な算式になるわけですね) 1Bookに何枚のシートがあるかで、算式の量も増えてしまいますね。 マニュアルで色を付けたシートを作成しテンプレートとして使用する方法と比較することも大事でしょう。 下は色を付けるマクロです。最初の5行(***の箇所)で動作を設定します。色を付けたいシートを出しておいて実行します。 ツール→マクロ→Visual Basic Editor で VBE画面に移り、標準モジュールを挿入し 標準モジュールに貼り付けます。 Sub Paint24() Const startRow = 2 '*** 行ステップをカウントする最初の行 Const lastRow = 9000 '*** 最終行 Const startPaintCol = "A" '*** 色を付ける最初の列名 Const lastPaintCol = "K" '*** 色を付ける最後の列名 Const myColorIndex = 35 '*** 色の指定 34、35などを試してみてください Const stepRow = 24 '行ステップ数 Dim rw As Long '行カウンタ Application.ScreenUpdating = False For rw = startRow + stepRow - 1 To lastRow Step stepRow Range(startPaintCol & rw & ":" & lastPaintCol & rw).Interior.ColorIndex = myColorIndex Next Application.ScreenUpdating = True End Sub
お礼
nishi6様へ ご回答ありがとうございます。 私は、マクロの世界はまだ触れたことがありません。 見慣れない単語がたくさんありまして、頭がついて いけるかな?と思えますが、時間を見つけて 必ず上記の方法で挑戦します。 お時間をとらせて、申し訳ありませんでした。
- HAL007
- ベストアンサー率29% (1751/5869)
条件付き書式が便利です。マクロは頻繁に書く人は問題ないでしょうが この為だけにマクロを書くと後から修正するとき苦労することになります。 但し、#1の方が書かれている2の式で上手くいきません。 正しくは、「=MOD(ROW(),24)=0」です。 問題は先頭の行にヘッダー(見出し)を付けるのが一般的ですから ヘッダーの行数を調整する必要があります。一行の場合は ・=MOD(ROW()-1,24)=0 として下さい。 但し、列単位で選択で設定すると一行目も条件に一致してしまいます。 再度一行目を選択して条件を削除した上で、別の書式をしていするなど して下さい。
お礼
HAL007様 ご連絡ありがとうございました。 #2の回答者様の方法で、目的が果たせました。 実は、表の頭に見出しがあり、その調整はHAL007様の ご指示のように書き換えます。 お世話になりました。
- imogasi
- ベストアンサー率27% (4737/17069)
関数式による解答が既に出ていることもあり、 VBAであるのでお気に召さないかも知れませんが、良ければ下記でテスト済みです。 ----- i=1 to 100の100(=最下行数)、Cells(a,10)の10(最右列数),RGB()の()内(=色種)は適当に設定してください。0から255までの数で、3つの数をカンマで区切って入れてください。 Modele1に下記を打ち込み、メニューバーの実行をクリックすること。 Sub test01() For i = 1 To 100 a = Worksheets("sheet1").Cells(i, 1).Row() If a Mod 24 = 0 Then ' MsgBox a Range(Cells(a, 1), Cells(a, 10)).Interior.Color = RGB(255, 255, 0) End If Next i End Sub
お礼
imogasi様 私はエクセルも初心者であり、VBAを用いた方法があることを 教えていただきありがとうございます。 しかし、いまでもVBAが何であるかわかりませんが、 時間を見つけて、ご指示あったように、テストします。 お時間をとらせたことに感謝申しあげます。 ありがとうございました。
- misatoanna
- ベストアンサー率58% (528/896)
「一回の設定」ということがどういうことなのかわかり ませんが、マクロを使用しないのでしたら、条件付書式を 使用するほうがよいでしょう。 A1が1時間目とした場合―― 1.A1に、[条件付書式]-[数式が] で =MOD(ROW(),24)=0 と入力し、書式-パターンで好きな色を選択します。 ※A4が1時間目でしたら、=MOD(ROW()-3,24)=0 2.これを必要な列範囲(B1:F1とします)に書式コピー します。 3.A:F1 を 表全体に書式コピーします。
お礼
misatoanna様 教えていただいたように、設定をしましたところ、 24行毎にカラーが出現しました。 今はもう分かりましたが、当初にエクセルシートの カラー設定をしておかないと、設定前に作った数式を用いたデータや 数式などがすべて消えてしまい、はじめは驚きました。 でも、出来ることが分かりましたので、ひと安心です。 ありがとうございました。
- motomiya
- ベストアンサー率48% (26/54)
たとえば、A1をアクティブにして、 1.[書式]-[条件付き書式]をクリック 2.条件に「数式が」「=MOD(ROW(A1),24)=0」と入力 ROW関数はセルの行番号を見つける関数 MOD関数は余りを返す関数で、この場合24で割った余りが0の意 3.「書式ボタン」を押して、パターンタブを選び、好きな色を選択。 4.その後、オートフィルで一番下のセルまでドラッグ。左右どちらかのセルにデータが入っていれば、フィルハンドルでダブルクリックすれば、一瞬で終わります。 5.これで24行目ごとに色が付くと思います。 6.以上の作業を自動マクロに記録すれば、もっと楽できます。 ご参考になれば、幸いです。
お礼
motomiya様 早くご連絡いただきありがとうございます。 ご指示の方法でテストしましたが、うまくカラーが 表れませんでした。 でも、ROW関数、MOD関数の意味を教えていただき 少し、この関数にも愛着がでてきました。 ありがとうございました。
お礼
xxsadayanxx 様 ご回答、ありがとうございます。 ご指示いただきました方法は、一番簡単で 数式も壊さず、時間も掛からず、最適でありました。 今後は、この作業方法で進みます。 教えていただき、大変助かりました。