Excel (一般機能)

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

 
(Windows 7 Home Premium : Excel 2010)
weekday関数の戻り値を日本語表示にしたい
投稿日時: 18/04/03 10:51:50
投稿者: カールおじさん

日付の表示形式を[aaa]に設定すれば、日本語で「日〜土」に表示できますが
WEEKDAY関数の戻り値を日本語表示にしたいのですが、表示形式をどのようにすればよいでしょうか。
第2引数の種類が[1]の場合は、邪道かもしれませんが日付と同じ[aaa]にすればできますが、
種類が[2][3]の場合は、わかりません。
[2]を使うことはほとんどないので、特に[3]の場合のうまい方法があったらご教示ください。

回答
投稿日時: 18/04/03 11:27:30
投稿者: bi

=WEEKDAY(シリアル値+2,3)
表示形式 aaa
 
ではだめですか?

回答
投稿日時: 18/04/03 11:32:27
投稿者: Mike

カールおじさん さんの引用:
第2引数の種類が[1]の場合は、邪道かもしれませんが日付と同じ[aaa]にすればできます
いえ、問題ありません。[1]の場合はそれを省略した =WEEKDAY(A!) でも構わないし、私などは文字数の少ない =MOD(A1,7) を使ったりします。
カールおじさん さんの引用:
種類が[2][3]の場合は、わかりません
=WEEKDAY(A1,2)+1
=WEEKDAY(A1,3)+2

回答
投稿日時: 18/04/03 15:21:56
投稿者: 角田
投稿者のウェブサイトに移動

普通に =TEXT(A1,"aaa") で良いでしょう。
 
> [1]の場合は、邪道かもしれませんが日付と同じ[aaa]にすればできますが、
> 種類が[2][3]の場合は、わかりません。
「邪道」以外の何者でもないですね。
それが誤った使い方だと、既に御存じならば、使うべきではないし、
他人に勧めるべきでもないですね。
 
WEEKDAY に固執しなければならない理由でもあるのでしょうか?

回答
投稿日時: 18/04/03 21:35:44
投稿者: んなっと

具体例を必ず書いてください。以下の【質問のサンプル】のように。
 
【質問のサンプル】
スーパーフライデー効果も調べたいので、週末売上の集計方法を少し変更しようとしています。
 
・「1904年から計算する」にチェックは入れていません。
・1900/1/1〜1900/2/28は集計期間に入ることは絶対にありません。(←これを書かないと余計な書き込みが入って時間の無駄になると、過去のQ&Aサイトを検索して知りました。)
 
現在のシートです。
 
      A   B   C     D  E F
 1   日付 曜日 金額         
 2  4/2(月)   0  180 金土日計 720 4
 3  4/3(火)   1  50  土日計 590 5
 4  4/4(水)   2  50         
 5  4/5(木)   3  160         
 6  4/6(金)   4  50         
 7  4/7(土)   5  200         
 8  4/8(日)   6  140         
 9  4/9(月)   0  50         
10 4/10(火)   1  130         
11 4/11(水)   2  190         
12 4/12(木)   3  150         
13 4/13(金)   4  80         
14 4/14(土)   5  170         
15 4/15(日)   6  80         
 
B2
=WEEKDAY(A2,3)
E2
=SUMIF(B$2:B$20,">="&F2,C$2:C$20)
 
これを以下のように表示したいのです。上司の命令で、列を増やしたり非表示にするのはなるべく避けたいと思っています。
 
    A   B   C     D  E
 1 日付 曜日 金額        
 2  4/2  月  180 金土日計 720
 3  4/3  火  50  土日計 590
 4  4/4  水  50        
 5  4/5  木  160        
 6  4/6  金  50        
 7  4/7  土  200        
 8  4/8  日  140        
 9  4/9  月  50        
10 4/10  火  130        
11 4/11  水  190        
12 4/12  木  150        
13 4/13  金  80        
14 4/14  土  170        
15 4/15  日  80        
 
B2の式をWEEKDAY(A2,1)にして表示形式を aaa にすれば、偶然B列に正しい曜日が表示されるのですが、
E2の式が少し長くなってしまいます。
 
      A   B   C     D  E
 1   日付 曜日 金額        
 2  4/2(月)   2  180 金土日計 720
 3  4/3(火)   3  50  土日計 590
 4  4/4(水)   4  50        
 5  4/5(木)   5  160        
 6  4/6(金)   6  50        
 7  4/7(土)   7  200        
 8  4/8(日)   1  140        
 9  4/9(月)   2  50        
10 4/10(火)   3  130        
11 4/11(水)   4  190        
12 4/12(木)   5  150        
13 4/13(金)   6  80        
14 4/14(土)   7  170        
15 4/15(日)   1  80        
 
何かいい方法はないでしょうか。なければあきらめます。
 
【Mikeさんの回答を勝手に補足】
 
      A   B   C     D  E F
 1   日付 曜日 金額         
 2  4/2(月)   2  180 金土日計 720 6
 3  4/3(火)   3  50  土日計 590 7
 4  4/4(水)   4  50         
 5  4/5(木)   5  160         
 6  4/6(金)   6  50         
 7  4/7(土)   7  200         
 8  4/8(日)   8  140         
 9  4/9(月)   2  50         
10 4/10(火)   3  130         
11 4/11(水)   4  190         
12 4/12(木)   5  150         
13 4/13(金)   6  80         
14 4/14(土)   7  170         
15 4/15(日)   8  80         
 
B2
=WEEKDAY(A2,3)+2
E2
=SUMIF(B$2:B$20,">="&F2,C$2:C$20)
とし下方向にバシッとコピーしてみてください。
E列の式も簡単だし、B列を表示形式 aaa にすればお望みどおり。
※E列を簡単にするのが目的なので、表示される結果は同じでも =WEEKDAY(A2+2,3) ではないことに注意。
 
 
【感想】
ここまで読んでいたのではないでしょうか。すごいです、Mikeさん。
最初、なぜ+2が外にあるのか私にはわかりませんでした。

回答
投稿日時: 18/04/03 22:06:13
投稿者: んなっと

WEEKDAY(A2,3)+2 が返す数値の 2 を表示形式 aaa で"月"と表示させるのは、
1900/1/2という日付に対して"月"と返してしまう問題と関係しているので使うべきではない、というスレッドが昔よくありました。
 
しかしExcelは43192のようなシリアル値で日付の計算をしています。
そしてシリアル値を7で割った余りから曜日を求めているはずです。
「シリアル値を7で割った余りが同じなら、曜日も同じである」という鉄則は今後も変わらないと思います。
もしそうであれば、=WEEKDAY(A2,3)+2 表示形式 aaa も悪くないと思います。
私は絶対に使いませんが。
 

引用:
・「1904年から計算する」にチェックは入れていません。
・1900/1/1〜1900/2/28は集計期間に入ることは絶対にありません。

投稿日時: 18/04/03 22:23:25
投稿者: カールおじさん

 biさん・Mikeさん他、ご提案有難うございました。
ご提案内容でやってみます。