[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『万年カレンダーについて。』(コルム)
次のURL の質問に答えていただけると幸いです。
https://www.excel.studio-kazu.jp/kw/20181011182658.html
< 使用 Excel:Excel2013、使用 OS:Windows10 >
理屈だけ分かればいいですね?
以下のサンプルで考えます。
行 _____A_____ _______B_______ _C_ ____D____ 1 日杖 着色したいセル 休日リスト 2 2018/12/31 無 2019/1/1 3 2019/1/1 着色 4 2019/1/2 無
5 ="" ←A5は空白文字とします(B5セルは無色であるべし)
B2:B5に条件付き書式を設定します。
条件式は、通常、こうします。 ↓ 「 =COUNTIF($D$2:$D$7,A2) > 0 」つまり、A2の日付が「D2:D7」に一つ以上なら「真」になって色が付く訳です。
ただ、これだけでもいいです。何故ならエクセルにおいて、0以外は「真」と判断されるからです。 ↓ 「 =COUNTIF($D$2:$D$7,A2) 」
さて、コルムさんの例では、2月30日なんてのは存在しないので、空白文字になっていますね?
空白文字は =COUNTIF($D$2:$D$7,A2) は5を返します。$D$2:$D$7の中に空白が5つあるからです。
なので、A5にも色が付いてしまいます。これはマズいですよね?
なので条件式は「A列が空白じゃなく」且つ「日付が休日リストにある」という作りにしないとならない訳です。
設定すべき条件 → =AND(COUNTIF($D$2:$D$7,A2),A2<>"")
(半平太) 2018/10/20(土) 20:32
(のりん ) 2018/10/20(土) 15:45
すみません。のりんさん勘違いが多くてすみません。どうか教えていただければと思います。ご不明な点があれば聞いてください。
(コルム) 2018/10/20(土) 18:27
教える気はない。無視する。
(のりん) 2018/10/20(土) 19:45
教えてgooでの万年カレンダー
https://oshiete.goo.ne.jp/qa/10692302.html
https://oshiete.goo.ne.jp/qa/10777331.html
https://oshiete.goo.ne.jp/qa/10773352.html
https://oshiete.goo.ne.jp/qa/10769159.html
・・・まであるかも知れない・・・・
(菩菩紙御炉) 2018/10/20(土) 21:08
>10/20(土)の12:46に打った数式でうまくいったのです。
うまくいったのなら、それでやればいいじゃないですか。私の案に拘ることはないです。
私としても、前のスレッドは何が何だか分からないので、戻る気は起きないです。
条件式の考え方はここで説明しました。
それが理解できれば応用はそんなに難しくないと思いますけど?
もし理解できないなら、こっちの簡易なサンプルで質問してください。
(半平太) 2018/10/20(土) 21:35
「 =COUNTIF($D$2:$D$7,A2) 」 選ぶ部分は、違いますが、これと同じ感じでできました。 祝日一覧に、2/30は入っていませんよ。 2017〜2022年どこにも入っていないのですが。 教えていただけると幸いです。
(コルム) 2018/10/20(土) 22:21
>=COUNTIF ($Y$3:$AA $106,A5)でうまくいきました。 >これは、どういう意味があるのでしょうか?
「$Y$3:$AA$106」の範囲にA5セルと同じデータが幾つあるか数えるものです。
> 「 =COUNTIF($D$2:$D$7,A2) 」 >選ぶ部分は、違いますが、これと同じ感じでできました。 >祝日一覧に、2/30は入っていませんよ。 >2017〜2022年どこにも入っていないのですが。
何が疑問なんですか?
2/30が入っているなんて言っていませんが。
2/30に相当するセルです。そちらの表なら、E34セルです。 そこに空白文字が入っているでしょう?
$Y$3:$AA$106には空白が沢山ありますよね?
だから、=COUNTIF($Y$3:$AA$106,A5) は1以上の数値が返り「真」と判定されるんです。
そうなったら、E34セルの隣のF34セルにセルに色が着いちゃうんですよ。 それはマズいでしょう?
なんで「うまくいきました」なんて言うんですか?
(半平太) 2018/10/20(土) 22:47
(菩菩紙御炉) 2018/10/20(土) 23:46
>$Y$3:$AA$106にも >空白があるというのは、どういうことでしょうか?
そのセル範囲が日付で全部埋まっていることはないと考えているんですが?
私の簡易サンプルでは、D列に日付は1つしかないです。残り5セルは空白となる。
なので、=COUNTIF($D$2:$D$7,A2) だけだとB5に色が付いてしまい「うまくいかない」。
一つ確認ですが、A5セルには ="" の数式を入れて、空白文字にしてありますね?
>10/20の、20:32では、D列は、空白ですよ。なにもないです。 >月間の隙間です。
10/20の20:32は、私が考え方を説明する目的で作ったサンプルデータです。
「月間の隙間」なんてものはそもそも存在してないです。 そこに表示されているもの(休日リスト・2019/1/1)が全てです。当然、空白じゃないです。
私のサンプルをベースに聞いてください。
・・と言ったところで、あと何が残っているんですかね?
ちょっと前にも言いましたが「うまくいっている」ならそれでやってください。 数式の考え方も説明しました。
何が残っているんですか?
(半平太) 2018/10/21(日) 12:08
>空白があるというのは、どういうことでしょうか? そのセル範囲が日付で全部埋まっていることはないと考えているんですが? 確かにそうです。 教えていただけると幸いです。
(コルム) 2018/10/21(日) 12:28
.. ' ,:‘. . ...:] ’‘ ’‘ .; こ ん な 馬 鹿 な 。 . 。 質 問 を す る 人 ,:‘. 。 '+。 初 め て で す .. ' ,:‘.
(猿でもわかるExcel ) 2018/10/21(日) 13:14
>A5セルには、=A3が入っています。
それはコルムさんの表の話ですね?
私のサンプルで考えてください。
>空白文字とはどういうことでしょうか?
例えばこんな数式を入れて、下にコピーしたとしますね。 ↓ A6セル =IF(A5>=C$3,"",A5+1)
するといつかはC$3の値以上と言う条件が成立して、つまり「真」となって、
""←というデータが入ることになります。
それが空白文字です。(長さが0の文字列です。本当の空白ではない)
空白文字は ="" という数式を入れても作れます。
そいつを COUNTIF関数の第二引数にして、セル範囲を数えると空白の数が返ってきます。
実際に自分のシートでテストして、そのことを確認してください。手っ取り早く理解できますよ。
(半平太) 2018/10/21(日) 13:43
祝日じゃなければ消えて当然です。何も問題ありません。
(半平太) 2018/10/21(日) 16:38
>こういうことでしょうか?
「こういうこと」って何ですか?
祝日なら色が付く、そうじゃなければ色は付かない・・当然でしょう。
何に困っているんですか?
(半平太) 2018/10/21(日) 17:32
ちょっと半平太氏にお聞きしたいが、Excelにおける "" は文字列の最後を意味するいわゆる NULL文字とは違うのかな?
(猿でもわかるExcel ) 2018/10/21(日) 18:21
>COUNTIF 関数の第2引数に、′′ ′′を入れて、テストしてください。の回答です。
なんか違うなぁ。これですよ。半角ダブルクォーテーションを2つ続けてください。中間には何も入れない。 ↓ ""
>Excelにおける "" は文字列の最後を意味するいわゆる NULL文字とは違うのかな?
分かりません。
通常、エクセルでは空白文字列と呼ばれています。Countblankのヘルプでは以下の表現になっています。
>空白文字列 ("") を返す数式が入力されているセルも計算の対象となります。
あと、私に対して「半平太氏」なんて呼びかけるな。「半平太さん」と言ってくれ。
(半平太) 2018/10/21(日) 19:01
>空白の数がかえってくるとはどういうことでしょうか?
これについては、説明していますよ。
> >=COUNTIF ($Y$3:$AA $106,A5)でうまくいきました。 > >これは、どういう意味があるのでしょうか? > > 「$Y$3:$AA$106」の範囲にA5セルと同じデータが幾つあるか数えるものです。
A5が空白文字なら、セル範囲に空白が幾つあるか数えることになるんですから、 空白の数が返ってくるんです。
自分でチャンと実験しましたか?(自分で手を動かさないで、聞かないでくださいよ)
>なぜ、COUNTIF ($Y$3:$AA $106,A5)を打っても、F34に、色が、着かなかったのでしょうか?
それをどこに打ったんですか?
条件付き書式の式はどうなっていますか?
(半平太) 2018/10/21(日) 20:24
それは、コルムさんの作った表の話ですよね? どんな具合に出来上がっている表なのか分からないので、深入りは避けたいです。
先ず、私のサンプルデータの方で同種の作業をやってみて、 何かおかしいことが出たら質問してください。
(半平太) 2018/10/21(日) 21:29
(コルム) 2018/10/22(月) 05:18
>設定すべき条件 → =AND(COUNTIF($D$2:$D$7,A2),A2<>"") >祝日の緑がすべて消えました。(祝日であるべきところも消えました。)
私のサンプル上での話ですね? そうじゃなかったらスルーしますよ。
B2セルを選択してから、条件付き書式コマンド→「ルールの管理」と辿ると出現するダイアログが出ます。
1.適用先はどうなっていますか。
=$B$2:$B$7 となっていればOKです。
2.次にそのダイアログ中にある「ルールの編集」ボタンをクリックしてください。
「数式を使用して、書式設定するセルを決定」というところが選択されていて 数式を入れるボックスに入っている数式がこうなっていればOKです。 ↓ =AND(COUNTIF($D$2:$D$7,A2),A2<>"")
3.A2:A5の日付と同じ日が「D2:D7」内に一つでもあればOKです。 因みにその日付は何日ですか?
以上が全てOKですか?
それなのに色が付かないですか?
(半平太) 2018/10/22(月) 15:37
「コルム」というニックネーム投稿全て削除願います。
( ) 2018/10/22(月) 17:38
>こういう風に作りました。
すれ違いの返答は、もう止めて貰えませんか?
前レスの1〜3の質問に答えて頂ければいいんですけど。
(半平太) 2018/10/22(月) 22:33
なんで条件付き書式の数式が全部 =COUNTIF($Y$3:$AA$106,A5) これなんですか? どういう風にしたら、こうなるのか見当もつかない。
人に聞いてばっかりだから、こんな風になっちゃってるのかと思う。 ちゃんと、条件付き書式の勉強をした方がいいよ。 私の見方が変なのかもと思ってしまった。 これが最後の返信だけど。
ああ、そうかめんどいから、数列選択して設定したのか・・・。 $AA$106まで必要ないけど? $Y$107
ルール管理で、緑を矢印ボタンで1番上に移動。 優先順位が上から下になってるので。
(BJ) 2018/10/22(月) 22:48
私のサンプルで何が旨くいってないのか突き止めるのが先決です。
私のサンプルデータが入ったシートの「シート見出し」を右クリックして、「コードの表示(V)」を選ぶと 画面中央に白いエリアが表れます。
その白いエリアに後記マクロ(investgation)をコピぺし、F5キーを押下してください その後、ALTキー + F11キーを押して、エクセルに戻ってください。
すると、F:G列にそちらの状況を表すデータが書き出されていますので、 そのデータが入った範囲をコピーしてこの掲示板に貼り付けてください。
’貼り付けてから、F5キーを押下するマクロ ’ ↓ Sub investgation() Dim cel As Range, a As FormatCondition Dim RW As Long For Each cel In Range("A2:A7,D2:D7") If Not IsEmpty(cel.Value) Then RW = RW + 1 Cells(RW, "F").Value = cel.Address Cells(RW, "G").Value = TypeName(cel.Value) & "#" & cel.Value & "#" End If Next For Each a In Me.Cells.FormatConditions RW = RW + 1 Cells(RW, "F").Value = "'" & a.Formula1 RW = RW + 1 Cells(RW, "F").Value = a.Interior.Color & " P=" & a.Priority Next End Sub
(半平太) 2018/10/23(火) 09:55
画面中央に白いエリアが表れます。 何処でしょうか?教えていただけると幸いです。 (コルム) 2018/10/23(火) 12:26
ディスプレーの真ん中です。
いつもはエクセルのシートが見えている位置です。
(半平太) 2018/10/23(火) 12:36
おー、ようやくまともな答えが返ってきたー。
それを見ると私のサンプルデータでやってないですね。
前回、こう質問していますが、
> 数式を入れるボックスに入っている数式がこうなっていればOKです。 > ↓ > =AND(COUNTIF($D$2:$D$7,A2),A2<>"")
=COUNTIF($Y$3:$AA$106,A5) ↑ こんなのが入っています。話が違いますよ?
第一、A列に何で7月のデータが入っているんですか? そっちの表だとしても、今、1月から6月の表を作っているんでしょう? おかしいじゃないですか・・
(半平太) 2018/10/23(火) 14:16
話がズレてしょうがないので、以前、こう警告しましたよね?
> 私のサンプル上での話ですね? > そうじゃなかったらスルーしますよ。
なのでスルーします ・ ・ と云うのも悪いので、ちょっと教えて下さい。
条件付き書式は、全部でいくつ設定されているんですか?
以前14件なんて言ってましたが、無意味な設定を含めてそんなになっただけですよね?
私としては、土・日・祝の3種類だけだと思っているんですが、どうなんでしょうか?
(半平太) 2018/10/23(火) 16:36
>今は、条件付き書式を、1件削除して、13件です。 >土・日を、1月(B列)に、1つの条件つき書式のように、1ずつルールを作っていきました。
そんなに必要ありません。3件でいいんです。
今回は手っ取り早くマクロで条件付き書式を設定することにします。
そちらで作った2019年7月のブックのコピーを作り コピーしたブックを使って以下の設定テストをしてみてください。
1.コピーしたエクセルブックを開く
2.目的の表があるシートの「シート見出し」を右クリックして、「コードの表示(V)」を選ぶ。
画面中央に白いエリアに後記マクロ(FormatCond)をコピぺし、F5キーを押下する。 その後すぐに、Ctrlキー + Zキー を押下する(元に戻す意味があるので、貼り付けたコードは消えます)、
その後、ALTキー + F11キーを押す。するとエクセルに戻れます。
3.以上で条件付き書式の設定は終了です。実際に目で確認してください。
もし、色が付かなかったら、一旦保存→ブックを閉じる→再オープン としてみてください。
Sub FormatCond() Me.Cells.FormatConditions.Delete
With Range("B5:B35,F5:F35,J5:J35,N5:N35,R5:R35,V5:V35") .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""土""" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .Color = 15773696 End With
.FormatConditions(1).StopIfTrue = False .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _ Formula1:="=""日""" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .Color = 255 End With .FormatConditions(1).StopIfTrue = False .FormatConditions.Add Type:=xlExpression, Formula1:= _ "=AND(COUNTIF($Y$5:$AB$35,A5),A5<>"""")" .FormatConditions(.FormatConditions.Count).SetFirstPriority With .FormatConditions(1).Interior .Color = 5296274 End With .FormatConditions(1).StopIfTrue = False End With End Sub
(半平太) 2018/10/23(火) 19:36
ちょっと確認です。
設定されている条件付き書式の数は幾つになりましたか?
(半平太) 2018/10/24(水) 13:14
(コルム) 2018/10/23(火) 07:31 のエクセルをダウンロードして
(半平太) 2018/10/23(火) 19:36 をやってみましたができましたよ(条件書式が3件になった)
祝日は$Y$5:$AB$35の範囲内は2017なので変更しないとだめですが。
コルムさんがどの程度エクセルの知識があるのかは不明ですが、半平太さんのこの説明が再現できる程度の知識がないと中々難しいと思います。
(くろ) 2018/10/24(水) 13:54
祝日リスト範囲(Y$5:$AB$35)にチャンと祝日日付が入っていないと、色は付きませんよ。
(半平太) 2018/10/24(水) 15:26
>祝日は$Y$5:$AB$35の範囲内は2017なので変更しないとだめですが。
と書いてあるとおり変更しないと色はつきませんよ。
コルムさんが書いている祝日の中で2019年はY40〜Y58ですよね?これを範囲内に変更しないとだめです。
条件書式の行番号を変更するといいと思います。
(くろ) 2018/10/24(水) 15:56
>2019年はY40〜Y58
それ本当?
コルムさんは、人の言う事を全然聞いてない人ですねぇ。
なら、これで範囲を広げてください。 ↓ =AND(COUNTIF($Y$5:$AB$1000,A5),A5<>"")
(半平太) 2018/10/24(水) 16:30
(半平太) 2018/10/23(火) 19:36
を参考にエクセルをコピーして作成したのだろうが、
なぜコピーして作成したデータのセルの書式や日付の書式が変わっているのか
コルムさんはどうやってこのデータを作成したの
間違いはセルのデータが1・2とただの数字になってしまっているから
2019/7/1
などに直せばいい
アップロードしてもらったデータを直しても意味がないので、どうやってエクセルデータをコピーしてアップロードしたエクセルデータを作成したのか教えてください
(ddd) 2018/10/25(木) 12:00
それに、COUNTIF の祝日範囲($Y$5:$AB$35)に「曜日」列(Z列)と「祝日名」列(AA列)を
含める必要なし。加えて空列のAB列まで加えてるって何?
祝日日付の1列(Y列)のみとすべき。
また、「曜日」列が全て手打ちで固定文字列って有り得ない。
普通は日付(シリアル値)から、
関数[ =TEXT(A5,"aaa") ] もしくは書式[ =A5 で 書式 "aaa" ]で作る。
カレンダーの年(C1)と月(A3,E3, …)は文字列("2019年","7月","8月, …)ではなく
数値(2019, 7, 8, …)とすべき。"年"/"月" 表示は書式で[ 0"年", 0"月" ]にすれば良い。
そうすれば、「日」列のシリアル値を[ =DATE($C$1,A$3,ROW()-4) ]で作れる。
書式は [ d ]にすれば[日]表示だけになる。
この場合、土日の青赤表示の条件付書式はWEEKDAY関数[ WEEKDAY(A5) ]による判定式に変える。
土曜は7、日曜は1。
年&月が文字列で手打ち固定、日の列も1〜31の数値で手打ち固定。
曜日も"日"〜"土"の文字で各月の列に各々手打ちで固定。
ハッキリ言って、これなら、態々、条件付き書式を使って色を付ける必要なし。
手作業で色を付ければ十分です。
最後に、2019年に天皇誕生日(12/23)はありません。
(AddinBox 角田) 2018/10/25(木) 13:02
そのコピーだとコピー時に
貼り付け先に合わせてコピー
などでコピーすると日付などがアップデータのようになってしまいます
元の万年カレンダーのブックをコピーしてもう一度
2018/10/23(火) 19:36
の処理を行ってください
(ddd) 2018/10/25(木) 13:04
なぜかAddinBox 角田さんの回答を無視しているようですが、AddinBox 角田さんの方法は 試してみましたか? (bi) 2018/10/25(木) 13:52
それにしても、これのどこが万年カレンダーなのだ。 万年とは言わんが、せめて100年前後程度には対応していないと。 何のためにこんなアフォな Excel の使い方するんだろうな? (ぼぼぼぼぼ) 2018/10/25(木) 13:59
これで通じなかったら私には導けません。
(ddd) 2018/10/25(木) 14:15
( ) 2018/10/25(木) 14:28
変更していないから変わらないのだと思います。
条件書式の数式が半平太さんの 「 =AND(COUNTIF($Y$5:$AB$1000,A5),A5<>"") 」になってますか?
変更のやり方が分からないならネットで調べてください。そのほうがここで聞くより画像があるので分かりやすいです。
(コルム) 2018/10/23(火) 07:31 の条件書式を=AND(COUNTIF($Y$5:$AB$1000,A5),A5<>""に変更して色が付くか確認してください。
色の付けたい祝日が入ってるセルが$Y$5:$AB$1000の範囲内なら色が付きます。
勝手にレイアウトや書式を変えるならご自分で範囲を変更するしかありません。
(くろ) 2018/10/25(木) 15:09
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.