[[20191028172737]] 『罫線(下線)の自動入力』(初心者) ページの最後に飛ぶ

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

 

『罫線(下線)の自動入力』(初心者)

あるシステムで管理しているデータをクリップボードでエクセル入力
しています。A列には日付が入るのですが、日付の行数は
不定期です。(一か月分)同じ日付の最終行に下線をH列まで自動で入れる
マクロを作成したいのですがご教授願います。
B列からH列にはデータが入力されています。(空欄もある)

A列・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・H列

2019/10/1
2019/10/1
2019/10/1


2019/10/2
2019/10/2

2019/10/3

2019/10/4
2019/10/4
2019/10/4

2019/10/5

2019/10/6

2019/10/7
2019/10/7

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


マクロでやるにしろ、条件付き書式でやるにしろ、「次行と違ったら下罫線を引く」とすればよくないですか?

(もこな2) 2019/10/28(月) 17:56


ありがとうございます。日付の部分ですが表示されていませんが、セルを選択すると「2019/10/1 14:45:00」のように時間も入っていますので毎行異なっていました。条件付書式で出来ますかね。

(初心者) 2019/10/29(火) 10:35


 それでは、日の部分だけで比較すればよいのでは?
 もしくはINT関数などで整数部分だけの比較とか。
(コナミ) 2019/10/29(火) 10:38

ありがとうございます。
初心者には対応できず。(泣)
もう少し細かく教えていただけると助かります。
(初心者) 2019/10/29(火) 12:25

 こんばんは ^^ 横入りすみません
エクセル、VBA、【 シリアル値 】
とかで検索すれば、詳しく解説して下さっているサイトが
多数、発見できる事と思います。【日にちは整数、で時刻は少数】
とかその理由とか。。。
気が付いた点だけで済みません、A列の日付が表示されている行に
空白行は存在するのでしょうか、では、 m(_ _)m
(隠居じーさん) 2019/10/29(火) 18:48

ありがとうございます。
いろいろと、参考になるサイト探しているのですが、
なかかな見つからなくて。

A列ですが、空白もあります。

(初心者) 2019/10/30(水) 08:08


 >A列ですが、空白もあります。 

 空白だった場合の 罫線のルールは?

(渡辺ひかる) 2019/10/30(水) 08:43


かぶった…

どんどん後だし条件が出てきますね…

>A列ですが、空白もあります。
そのときはどうなると正解なんですか?
「次行と違ったら下罫線を引く」ルールだと罫線引いちゃいますけど。

(もこな2) 2019/10/30(水) 08:44


ありがとうございます。」
空白も対象でH列まで下の罫線を引きたいです。
説明不足で申し訳ないです。
(初心者) 2019/10/30(水) 10:09

 空白行も対象ということは
 こんな感じですよ

 2019/10/1 
 2019/10/1 
 空白行
 空白行
 空白行
 2019/10/2 
 2019/10/2 
 空白行
 空白行
 2019/10/3 

 これに罫線(***)を引くと

 2019/10/1 
 2019/10/1 
 ***
 空白行
 空白行
 空白行
 ***
 2019/10/2 
 2019/10/2 
 ***
 空白行
 空白行
 ***
 2019/10/3 
 ***

という感じですか?

(渡辺ひかる) 2019/10/30(水) 10:57


勘違いしてました。
ごめんなさい。
そうなりますね。
A列にはありません。

B〜H列までのセルに空白がある場合があります。
(初心者) 2019/10/30(水) 11:25


 条件付き書式の数式だけ

 =DATE(YEAR(A2),MONTH(A2),DAY(A2))<>DATE(YEAR(A3),MONTH(A3),DAY(A3))

(渡辺ひかる) 2019/10/30(水) 11:41


A列に途中空欄が無いのであれば、今まで皆さんが言った通りに条件を書くだけですよ。
「A:H」に対し、「=INT($A1)<>INT($A2)」だったならば下罫線を描くよう、指定してみてください。
(???) 2019/10/30(水) 11:42

 10/1の後に11/1が来るというようなデータでなければDAY関数で抜き出すだけでも
 できるかな〜と思っていたのですが、万全を期すなら渡辺ひかるさんや???さんの
 回答のように日付全体(時間データなし)を比較するのがいいでしょうね。
(コナミ) 2019/10/30(水) 12:15

みなさん、ありがとうございます。
うーん、できません。

渡辺さんひかるさん、罫線は日付が変わった場合、H列まですべて入れたいです。
でも、日付が変わって無くても罫線は部分的ではいったり、はいらなかったりです。

???さん、H列まで罫線入ってOKなのですが、渡辺ひかるさんと同じように入ったりはいらなかったり。

同じデータでやったのですが、罫線の入る位置も違いました。

A列のデータの一部ですが、日付に関係なく罫線が入ります。

2019/10/23 8:00:00
2019/10/23 8:00:00
2019/10/23 19:50:00
2019/10/23 21:55:00

(初心者) 2019/10/30(水) 12:57


A列のセルの書式が、文字列になっていたりしませんか? 日付型にしている前提です。 行によって罫線の入り方がバラバラなのなら、書式が行毎に違っているとか?
(???) 2019/10/30(水) 13:08

A列は日付
B〜H列は標準でした。
(初心者) 2019/10/30(水) 13:17

 A列の表示形式を「標準」に変えたらすべてのデータが5桁の整数+小数の
 数値データに変わりますか?

 それと念のため条件付き書式に設定した「適用先」と
 条件式を書きだしてください。
(コナミ) 2019/10/30(水) 13:29

標準に変更をおこなったら、「43739.6145833333」のような表記になりました。
新しい書式ルールの数式を使用して、書式設定するセルを決定で

シート1: =DATE(YEAR(A2),MONTH(A2),DAY(A2))<>DATE(YEAR(A3),MONTH(A3),DAY(A3))
シート2:=INT($A1)<>INT($A2)

それぞれ同じデータで実行しました。範囲はA〜Hでデータのある行です。
(初心者) 2019/10/30(水) 13:49


 こちらで検証してから、アップしているので、そちらのデータがおかしいとしか思えません。

 既存のデータはとりあえず置いといて、
 新規シートで 日付を入れて、条件付き書式を確認してみてください

(渡辺ひかる) 2019/10/30(水) 13:55


 渡辺ひかるさんの式は各列ごとに判断することになると思うが。
 どの列もA列で判断するのであれば
 =DATE(YEAR($A2),MONTH($A2),DAY($A2))<>DATE(YEAR($A3),MONTH($A3),DAY($A3))
 と列を絶対参照にする必要がある。
(ねむねむ) 2019/10/30(水) 13:58

 ねむねむさん フォローありがとうございます。
 確かに検証はA列のみでした。

 でも(???)さんの数式でも おかしいということは、やっぱりデータ起因でしょうね

(渡辺ひかる) 2019/10/30(水) 14:04


 適用先とずれているというのもありそうですね。

 書式は下罫線を設定するようにしているのでしょうか?
(コナミ) 2019/10/30(水) 14:15

セルの書式を標準にすると「43739.6145833333」になる、というならば、それは日付型として正しい値ですね。(2019/10/1 14:45:00 でしょうか)

データ、セルの書式、条件付き書式の数式が正しいとなると、うまくいかない理由が判りません。 1つのシートに、下罫線を付ける以外の条件付き書式も含まれていて、それが影響している、なんて事はありませんか?
(過去に、自分の作った間違った条件付き書式を消さずに、教わった条件付き書式を追加して、何も変わらない、と延々QAを繰り返した人が居たもので)

行ずれ。 んー、十分あり得ますね。 私の書いた式はA1とA2を比較するので、1行目からデータの場合ですが、実際は何行目からなのでしょう? 範囲指定した1行目と2行目を比較する式にすればOKなのですが。
(???) 2019/10/30(水) 14:19


新しいシートでデータを10行入力(A:日付、B〜H:ランダムに数字や空白)して、ねむねむさんの式で出来ました。(既存は駄目)しかし、今後は手入力も出来ず、現状のシートを使用しなければならないため原因を調べないと駄目ですね。B列以降で60進の計算を行っているのですが影響ありますか?

(初心者) 2019/10/30(水) 14:22


ルールのクリアしましたが駄目でした。
5行目からです。
それが原因ですか。
(初心者) 2019/10/30(水) 14:27

 5行目からなら

 =DATE(YEAR($A5),MONTH($A5),DAY($A5))<>DATE(YEAR($A6),MONTH($A6),DAY($A6))

 としなければだめです。

(渡辺ひかる) 2019/10/30(水) 14:41


5行目からだと、私の式の場合も「=INT($A5)<>INT($A6)」としないと、ずれた行を調べてしまいますね。
(???) 2019/10/30(水) 14:46

ありがとうございます。
出来ました。
みなさんに感謝。
(初心者) 2019/10/30(水) 14:49

たびたびですが。問題というか、自分の中で思っていた内容とならなかったのでもう一度相談させてください。皆さんからアドバイスいただいた内容を使用して罫線(下線)は引くことが出来ました。自分の中での問題はここから。
下線を引きたいのは複数のシートだったので対象のシートを選択状態で条件付書式設定すればよいと思っていましたが、なんとグレーアウトになって設定できませんでした。
また、あらかじめ対象のシートに一枚ずつ設定しようとも思いましたが、それぞれ空のシートへクリップボード貼り付けを繰り返したあと、一枚目のシートに設定しているマクロボタンを実行して表を作成しています。
ですので、最終的に出来上がった表に対して一枚ずつ条件付書式設定を行っています。これがかなり面倒です。なにか対策はありますかね?。出来れば、シート一枚目に設定してあるマクロにつなげて実行処理できればと思っています。
クリップボード貼り付け直後は最終的に出来上がった表とまったく違っていて日付の位置も違っています。
シート1はマクロ実行シートでシート2以降(複数あり)はソフトウェアより抽出されるデータの貼り付けを行っています。最終的に出来上がるフォーマットは同じですが、行数に違いがあります。
長文になってしまいましたがよろしくお願いします。

(初心者) 2019/10/31(木) 17:48


絶対超えないくらい、多めの行数を条件付き書式設定しておくだけです。
または、マクロで処理後、条件付き書式もマクロで再設定してしまうとか。
(???) 2019/10/31(木) 18:05

解決しているらしいけどマクロでの処理例。
A列に抜けがなく、すべてが日付型なら希望の動作になるとおもいます。
    Sub さんぷる()
        Dim MyRNG As Range

        With ActiveSheet
            For Each MyRNG In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
                If Int(MyRNG.Value) <> Int(MyRNG.Offset(1).Value) Then
                    MyRNG.Resize(, 8).Borders(xlEdgeBottom).LineStyle = True
                End If
            Next
        End With
    End Sub

複数シートに適用させたいなら「With 【ActiveSheet】」の部分が次々に入れ替わるループを考えればよいです。(アクティブシートを変えていくという力業でもできるでしょうけど・・・)

(もこな2) 2019/10/31(木) 23:43


???さん、もこな2さん、ありがとうございます。
マクロ処理したいです。
単体シートであれば、もこな2さんのA1をA5に変更して出来ました。(A5以降が対象)
ループとやらを考えて見ます。

(初心者) 2019/11/01(金) 10:04


OKです。
出来ました。
ありがとうございます。
(初心者) 2019/11/01(金) 11:07

特別なパターンがあります。

Sub さんぷる()

        Dim MyRNG As Range
        With ActiveSheet
            For Each MyRNG In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
                If Int(MyRNG.Value) <> Int(MyRNG.Offset(1).Value) Then
                    MyRNG.Resize(, 8).Borders(xlEdgeBottom).LineStyle = True
                End If
            Next
        End With
    End Sub

空のシートがあった場合だめですかね?とまってしまいます。
対策を教えていただけませんか?

(初心者) 2019/11/01(金) 13:26


 他のスレッドは見ないんでしょうかね

https://www.excel.studio-kazu.jp/kw/20191101092704.html

 『2枚目シート以降の全シートに関数を入力したい』(TTT)

 なんかは参考になると思いますが

(渡辺ひかる) 2019/11/01(金) 14:11


ありがとうございます。
うーん。悩みます。
難しい。
一ヶ月でデータが無かった場合、クリップボード貼り付けしないので、
空シートになるのですが、ダミーでも貼り付けて処理後、削除でもいいのですが・・・・。
ださいですね。

(初心者) 2019/11/01(金) 14:54


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.