プロが教えるわが家の防犯対策術!

エクセルのテーブル機能を使って毎日何行か追加していく表を作っています。
一番左の列に日付を入れているのですが、見やすくするために日付が変わる行と行の間に太い線を入れて区切りを付けたいと思っています。
今は同じ日付の最後の行に毎日セルの書式設定の罫線の下太罫線をいれているのですが、この方法ですとフィルター機能で表示する行を制限した時に罫線を入れている行も非表示になってしまうと一緒に消えてしまいます。
何か一番左の列の日付が変わる行のところに区切り線を入れる方法があれば教えてください。

使っているエクセルのバージョンは2010です。

A 回答 (8件)

No.1・7です。



>その方が見やすいのですが・・・
実は当方も投稿後そう思っていました。
余計なお世話ですべてのセルに格子罫線にしていたので確かに、下太罫線が判りにくかったですね。

実は前回のコードをほんの少しだけ変えるだけです。
>Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
の行を
>Range("A1").CurrentRegion.Borders.LineStyle = xlNone
に変更してみてください。

※ 範囲内の罫線は下太罫線だけとします。m(_ _)m
    • good
    • 1
この回答へのお礼

教えてもらったように変更して最初に思っていた通りの表になりました。
どうもありがとうございました、これで毎日の表のチェックが楽になります。

便利そうなのでマクロにもちょっと興味が出ましたが、私の生活だとエクセルを
使う場面自体が少ないのでそのために長い勉強時間を使うのはやはり難しいので、
ここで質問してtom04さんに教えてもらわないとこんなにうまく行かなかったと思います。

質問をした時は簡単な事で、自分がその方法を知らないだけかと思っていたのですが
意外と難し要求だったようで色々教えてもらった皆さんに改めて御礼を言わせてもらいます
どうもありがとうございました

お礼日時:2015/06/28 13:09

No.1です。



まだ解決していないようなので・・・
>マクロは難しくてちゃんと使えるようになるのはちょっと自分には無理かなと思いました。

とありますが、一般操作では難しいようなので
今回もお望みでないVBAです。
ただし、一度設定しておくと何もご自身でマクロの操作をしなくても
フィルタ操作を行うだけで下太罫線を表示する方法にしてみました。
前提条件として、1行目は項目行でデータは2行目以降にあるとします。

どこか使っていない遠く離れた列の2行目以降(1行目は避けてください)に
=SUBTOTAL(9,B:B)
という数式を入れておいてください。
(数式そのものは意味はないのですが、フィルタ時にChangeイベントを発生させるためです)

そして画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
フィルタの操作をしてみてください。

Private Sub Worksheet_Calculate() 'この行から//
Dim i As Long, k As Long, lastCol As Long
Application.ScreenUpdating = False
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row + 1
If Cells(i, "A") <> Cells(i + 1, "A") Then
Cells(i, "A").Resize(, lastCol).Borders(xlEdgeBottom).Weight = xlMedium
End If
If Rows(i).Hidden = True Then
k = i
Do
k = k + 1
If Rows(k).Hidden = False Then Exit Do
Loop
If Cells(k, "A") <> Cells(i, "A") Then
Cells(i - 1, "A").Resize(, lastCol).Borders(xlEdgeBottom).Weight = xlMedium
End If
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで//

※ 1行目で最終列を取得していますので、前述の関数は1行目に入れないようにするためです。

※ とりあえず各セルの枠線は「格子」になるようにしています。

尚、ファイル保存時は「ファイルの種類」で「マクロ有効ブック」として
名前を付けて保存してください。m(_ _)m
    • good
    • 1
この回答へのお礼

前回は自分で出来る様にもなろうともせずに新しいマクロを作ってもらう
というのも厚かましいかと思い遠慮したのですが今回作ってもらったマクロは
完璧に私の思った通りの動作をしました、ありがとうございます
もし良ければ日付が変わるところの横太線だけを表示させる(縦と横の細い線を表示させない)マクロもお願いしてもいいでしょうか
その方が見やすいのですが、自分だとマクロの何処の部分を削ったらいいかすら
全くわからないので

お礼日時:2015/06/27 22:44

思い切って、日付ごとに何種類かの文字色を使って見れば?


見にくかったら 逆にセルに色付けして見るとか・・・。

超アナログ的な発想ですが・・・。
    • good
    • 1
この回答へのお礼

ありがとうございます、いい方法ですね
日付を5色とか10色に分けておけばオートフィルターを使った時にも
まず被ることもないので日の変わり目がわかりやすくなりそうです
次に自力でこういう表を作る時に参考にさせてもらいます

お礼日時:2015/06/27 22:40

> 昨日のような例で言いますとA1~A10が6月21日、A11~A15が6月22日の時10行目と11行目がオートフィルターで隠れてしまうと6月21日と6月22日の間に罫線がない状態になってしまいました。


> オートフィルターで罫線を使うのは難しいみたいですが、また何かありましたらよろしくお願いします。

たしかに前後のセルが両方フィルターで非表示になると罫線も見えませんね。
おっしゃるとおりオートフィルタで罫線を使うのは限界があるようです。

お役にたてずすみません!
    • good
    • 1
この回答へのお礼

いえ、何度も親切にありがとうございました。
今回のことには直接関係ないですが、教えてもらったことは便利そうなので
これからエクセルを使う時に活かしていきたいと思います。

お礼日時:2015/06/28 13:08

> 例えばA1~A10が6月21日、A11~A15が6月22日だとすると、教えてもらった方法で


> 10行目に罫線を入れることができたのですが、オートフィルターで10行目が消えた時には9行目に
> 新たに罫線が引かれないので6月21日と6月22日の間に罫線がない状態になってしまいました。

たしかにおっしゃるとおり消えてしまいますね。
これは失礼いたしました!

条件付き書式に次のルールを追加すれば大丈夫だと思います。


最初にお伝えしたのは「下のセルと日付が違う時に下の罫線を表示する」という条件でした。
さらにもう1つ「上のセルと比較して日付が違う時に上の罫線を表示する」という条件を追加します。
条件の数式はこうなります。

「=OFFSET($A2,-1,0)<>$A2」

OFFSET関数を使って1つ上のセルを指定します。

一応わたしのほうでテストしてみて大丈夫そうだったので試してみてください~。
    • good
    • 2
この回答へのお礼

今日もありがとうございます、私も昨日教えてもらった時に試してみて「=$A1 <>$A2」で日付の変更の下のセルを指定できるなと上の罫線を引いてみたりもしたのですがやはりダメで、
今回教えてもらった「=OFFSET($A2,-1,0)<>$A2」でも昨日と同じように罫線を引いた行がオートフィルターで隠れてしまった場合罫線も一緒に消えてしまいました。

昨日のような例で言いますとA1~A10が6月21日、A11~A15が6月22日の時10行目と11行目がオートフィルターで隠れてしまうと6月21日と6月22日の間に罫線がない状態になってしまいました。
オートフィルターで罫線を使うのは難しいみたいですが、また何かありましたらよろしくお願いします。

お礼日時:2015/06/23 20:41

条件付き書式設定を使えば日付が変わるごとに罫線を入れられますよ。



ただ罫線の太さは選べないので、該当する行だけ下の罫線を入れるか、罫線の色を変えれば同じような感じになります。
もちろんフィルター機能を使っても罫線は消えることなく表示されます。


まず、表全体を選択し [ホーム]タブの[条件付き書式設定]をクリック。

[条件付き書式設定]の[新しい書式ルール]をクリック。
一番下の[数式を使用して書式設定するセルを決定]をクリックします。

[次の数式を満たす場合に値を書式設定]の欄の中に数式を入力します。
たとえば日付がA列でA2のセルから入力されている場合、上のセルと下のセルの日付が違うという条件なので次の数式を入力。

「=$A2 <>$A3」


[書式]をクリックし[セルの書式設定]の[罫線]で下の罫線を指定し「OK」をクリックします。

もしここでたとえば赤の罫線を指定すれば、赤い罫線をつけることができます。
    • good
    • 1
この回答へのお礼

ありがとうございます、罫線の太さは重要じゃないので教えてもらった方法を
試したらフィルター機能を使う前は望んだ位置に罫線を引くことができたのですが、
フィルターで罫線の入った行を非表示にしてしまうと罫線も一緒に消えてしまいました。

例えばA1~A10が6月21日、A11~A15が6月22日だとすると、教えてもらった方法で
10行目に罫線を入れることができたのですが、オートフィルターで10行目が消えた時には9行目に
新たに罫線が引かれないので6月21日と6月22日の間に罫線がない状態になってしまいました。
もし何か解決法があればまたよろしくお願いします。

お礼日時:2015/06/22 20:41

オートフィルターではなく


フィルターオプションを使って
別のシート或いは、右の方の列に
データを抽出する方法ではダメでしょうか。
http://www.eurus.dti.ne.jp/yoneyama/Excel/filter …
に詳しく説明されてます。
こちらの方法で抽出されたデータに条件付き書式で
左列の日付が変わったら下罫線を入れると云う
条件付き書式の設定が可能です。
    • good
    • 1
この回答へのお礼

条件付き書式で色々出来るのですね、今回の表はオートフィルターを使って
見る時に表示項目を色々切り替えて見たいのでデータを抽出する方法は
向いてませんがまた別の表にまとめ直す時に参考にさせてもらいます。
どうもありがとうございました。

お礼日時:2015/06/22 20:03

こんばんは!



>フィルター機能で表示する行を制限した時に罫線を入れている行も非表示になってしまうと一緒に消えてしまいます。

フィルタを掛け、表示されている行で日付が異なればその境に下太罫線を表示させたい!
という解釈です。
VBAになってしまいますが、一例です。
尚、1行目が項目行でデータは2行目以降にあるとします。

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub 罫線() 'この行から//
Dim i As Long, lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Application.ScreenUpdating = False
Range("A1").CurrentRegion.Borders.LineStyle = xlContinuous
For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
If Cells(i, "A") <> Cells(i + 1, "A") Then
Cells(i, "A").Resize(, lastCol).Borders(xlEdgeBottom).Weight = xlMedium
End If
If Rows(i).Hidden = False And Rows(i + 1).Hidden = True Then
Cells(i, "A").Resize(, lastCol).Borders(xlEdgeBottom).Weight = xlMedium
End If
Next i
Application.ScreenUpdating = True
End Sub 'この行まで//

※ フィルタ解除後もマクロを実行してください。
同じ日付の行も下太罫線になっている行があると思いますので・・・m(_ _)m
    • good
    • 1
この回答へのお礼

こんばんは、丁寧な回答ありがとうございます。
試めさせてもらったところ日付変更以外のフィルターで隠れた行がある所にも区切りの太下線が付いてしまって上手く行かなく、マクロは難しくてちゃんと使えるようになるのはちょっと自分には無理かなと思いました。

お礼日時:2015/06/21 21:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています