Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2013)
セルの色を変える。又は、文字の色を変えたい。
投稿日時: 17/01/09 20:53:26
投稿者: Gilbert

あけましておめでとうございます。
Gilbertと申します。よろしくお願いします。
 
色々な集計表を作成する時に、Date関数を使って作成しています。
その時に、曜日が(土)(日)になった時に、そのセルの色を変える方法を教えてください。
例えば、 (土)は 「青/水色」、 (日)は 「赤」
 
又は、セルの色を変えないで、文字の色を変える方法があれば、合わせて、教えて頂けると嬉しいです。
例えば、 (土)は 「青/水色」、 (日)は 「赤」
 
現在使っている式は、次のとおりです。(型式が同じですが、実際のものとはセル番地は異なります)
 
A1 2017(西暦年号)
B1 1 (月名)
 
 
   日付
B3 1            C3 (日)
B4 2            C4 (月)
 ↓ 3            C5 (火)
月末に続く
 
【式】
C3=IF($B$1="","","("&TEXT(WEEKDAY(DATE($A$1,$B$1,B3),1),"aaa")&")")
 
 
以上です。
 
 
 
 
 
 
 
 

回答
投稿日時: 17/01/09 21:43:04
投稿者: WinArrow
投稿者のウェブサイトに移動

条件付き書式を設定します。
 
>そのセル
がどこなのか?わかりませんが、
仮にC列セルとして
C3〜Cnnを選択しておいて
最初に土曜日
(1)「条件付き書式」をクリック
(2)「新しいルール」をクリック
(3)「指定の値を含むセルを〜〜」をクリック
(4)左から「特定の文字列」「次の値を含む」「土」
書式はお好きなように設定してください。
次に日曜日
(1)〜(3)は上戸同じ
(4)左から「特定の文字列」「次の値を含む」「日」
書式はお好きなように設定してください。
 
この設定を31日分行うと
ところで、大の月、小の月で、月末日が異なりますが、
大丈夫でしょうか?。

回答
投稿日時: 17/01/09 22:11:54
投稿者: WinArrow
投稿者のウェブサイトに移動

>C3=IF($B$1="","","("&TEXT(WEEKDAY(DATE($A$1,$B$1,B3),1),"aaa")&")")
     
現在の数式で31日分適用すると
例えば、2月29日に当たるところは、3月1日の曜日をなります。
 B3〜B33までは、手入力なんですか?
 B3セルに
=DATE($A$1,$B$1,ROW(A1)
と入力し、表示形式で"dd"とする方が間違いがなくなります。
セルB33までフィルドラッグします。
この数式を使用すると
2月29日のところは、「1」になります。
これを採用するならば、C列の数式も変更すことになります。
 C3セル
=IF($B$1="","",TEXT(B3,"(aaa)"),"")
 
なお、2月29日のところを空白文字列にする方法は
=IF(DATE($A$1,$B$1,ROW(A1))<=EOMONTH(DATE($A$1,$B$1,1),0),DATE($A$1,$B$1,ROW(A1)),"")
   

投稿日時: 17/01/10 21:13:41
投稿者: Gilbert

WinArrow さん、昨日は早速のご返答ありがとうございました。
お礼が遅くなってしまいまして、申しわけありません。
 
仕事から帰って、自分のPCで教えて頂いたことをやってみました。
私のPCは 8.1 ですが、Excelは2013なので問題ないと思います。
 
「条件付き書式」ありがとうございました。
使ったことがなかったものですから、感激でした。
 
 
それから、
>ところで、大の月、小の月で、月末日が異なりますが、
 大丈夫でしょうか?
>B3〜B33までは、手入力なんですか?
ですが、
 
次のようにしていました(しています)。
B3〜B33までは、予め、各フォーマットに1〜31が固定で入力されています。
大の月は、特に問題ありませんが、
うるう年と、小の月の処理が問題になって来ますので(見た目も含めて)
29日のセルには
B31=IF(AND(OR($A$1=2012,$A$1=2016),B1=2),29,IF(B1=2,"",29))
 
30日のセルには
B32=IF(AND(OR($A$1=2012,$A$1=2016),B1=2),"",IF(B1=2,"",30))
 
31日のセルには
B33=IF(B32="","",IF(OR(B1=4,B1=6,B1=9,B1=11),"",31))
 
これで、あと2年は無事に過ごせそうですが、29日のセルの条件を
絶えず忘れないように変えて行かないと、具合が悪いことになります(^_^;)
勿論、$A$1=2020は必ず明日にでも加えておきます!!
 
教えて頂いた、
> B3セルに
  =DATE($A$1,$B$1,ROW(A1)
  と入力し、表示形式で"dd"とする方が間違いがなくなります。
  セルB33までフィルドラッグします。
 
の方法も勉強させて頂きました。
その中で、
>なお、2月29日のところを空白文字列にする方法は
=IF(DATE($A$1,$B$1,ROW(A1))<=EOMONTH(DATE($A$1,$B$1,1),0),DATE($A$1,$B$1,ROW(A1)),"")
ですが、この意味は
B31=IF(DATE($A$1,$B$1,ROW(A1))<=EOMONTH(DATE($A$1,$B$1,1),0),DATE($A$1,$B$1,ROW(A1)),"")
でよろしいんですよね?
 
実は、2017年2月で試したところ、29日〜31日が消えなかったものですから
この点だけ、もう一度教えて頂けたら嬉しいのですが・・・
多分、わたしのコード入力ミスが原因だとは思うのですが、何度か見直しましたが
うまくゆきません・・・
 
お忙しいところ恐縮ですが、よろしくお願いいたします。
 
 

回答
投稿日時: 17/01/10 22:03:24
投稿者: WinArrow
投稿者のウェブサイトに移動

>B31=IF(DATE($A$1,$B$1,ROW(A1))<=EOMONTH(DATE($A$1,$B$1,1),0),DATE($A$1,$B$1,ROW(A1)),"")
>でよろしいんですよね?
 
違います。
数式を入れるセルは、B3です。
B3を下へフィルドラッグすれば、
B31セルの数式が、お望みの数式に変わるはずです。
 
この数式の意味
右辺のEOMONTH関数は、当該月の月末日を求める関数です。
左辺のDATE関数で取得した日付が、月末日まで、日付とし
月末を超えたら、空白文字列になります。
2月の月末日は、自動で28日or29日になりますので、年を判断する数式は不要です。
 
 
 

投稿日時: 17/01/10 22:20:27
投稿者: Gilbert

WinArrow さん、早速のご返答ありがとうございました。
 
今、式を書きなおしましたところ、上手く行きました!!
 
本当にありがとうございました。
 
明日、早速、教えて頂いたやり方にすべて書き換えます。
 
とてもすっきりしていますし、将来に亘り使えるということが、
 
何より素晴らしいことです!
 
ご丁寧な解説、重ねてお礼を申し上げます。
 
今回は、これで失礼いたします。