- ベストアンサー
Excel2007 毎月の第1月曜日を表示したい。
Excel2007です。 毎月の第1月曜日を表示するため、調べたところ =DATE(YEAR(B2),MONTH(B2),1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2),1),2)+1の式を見つけました。 ほとんどの月は、うまく表示されるのですが第1月曜日が1日の時がうまく表示されません。 すなわち、 B2に2009 B2に6 として とし2009年6月の第1月曜日を表示させようとすると、2009/6/8と表示され2009/6/1と表示されません。 IF関数等でで第1月曜日が8日のときは、1日とする数式をご教授ください。
- sainokuniob
- お礼率80% (264/328)
- オフィス系ソフト
- 回答数9
- ありがとう数3
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
#1の式は年の部分が絶対参照、月の部分が相対参照になってましたので、 月の部分も絶対参照に変えました。 =IF(WEEKDAY(DATE($A$1,$A$2,1))<3,DATE($A$1,$A$2,1)+(2-WEEKDAY(DATE($A$1,$A$2,1))),DATE($A$1,$A$2,1)+(7-WEEKDAY(DATE($A$1,$A$2,1)))+2)
その他の回答 (8)
- ki-aaa
- ベストアンサー率49% (105/213)
簡単な式です。 A1に2009 A2に5 として A3に日にちだけ表示 =8-(WEEKDAY(DATE($A$1,A2,-1))) B2にシリアル値で入力の場合 B3に =DATE(YEAR(B2),MONTH(B2),(8-WEEKDAY(DATE(YEAR(B2),MONTH(B2),-1))))
- sige1701
- ベストアンサー率28% (74/260)
>B2に2009 B2に6 として B1に2009 B2に6 として =DATE(B3,B4,MATCH(2,INDEX(WEEKDAY(DATE(B3,B4,0+ROW(A1:A7))),),0)) 日にちだけ =MATCH(2,INDEX(WEEKDAY(DATE(B3,B4,0+ROW(A1:A7))),),0) B1にシリアル値で入力の場合 =B1-DAY(B1)+MATCH(2,INDEX(WEEKDAY(B1-DAY(B1)+ROW(A1:A7)),),0) 日にちだけ MATCH(2,INDEX(WEEKDAY(B1-DAY(B1)+ROW(A1:A7)),),0)
貴方が「見つけ」た式をそのまま活かすなら =DATE(YEAR(B2),MONTH(B2),1)+7*(MOD(DATE(YEAR(B2),MONTH(B2),1),7)<>2)-WEEKDAY(DATE(YEAR(B2),MONTH(B2),1),2)+1
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
質問者sainokuniobさんと回答者gyouda1114さんは同一人物でしょうか? とりあえず、もう一案 B2セルに日付(シリアル値)が入っているとします =TEXT(B2,"y/m/!7")-WEEKDAY(TEXT(B2,"y/m/!7"),3)
- maron--5
- ベストアンサー率36% (321/877)
=DAY(DATE(YEAR(B1),MONTH(B1),7*1-WEEKDAY(DATE(YEAR(B1),MONTH(B1),0),3)))
- gyouda1114
- ベストアンサー率37% (499/1320)
回答ありがとうございます。 うまくいきました。 今後ともよろしく
長くなりますが、単純にやりました。 =IF(DAY(DATE(YEAR(S1),MONTH(S1),1)+7-WEEKDAY(DATE(YEAR(S1),MONTH(S1),1),2)+1)=8,DATE(YEAR(S1),MONTH(S1),1)+7-WEEKDAY(DATE(YEAR(S1),MONTH(S1),1),2)+1-7,DATE(YEAR(S1),MONTH(S1),1)+7-WEEKDAY(DATE(YEAR(S1),MONTH(S1),1),2)+1)
- marbin
- ベストアンサー率27% (636/2290)
年、月ともB2ですか? ↓はA1に年、A2に月での例です。 =IF(WEEKDAY(DATE($A$1,A2,1))<3,DATE($A$1,A2,1)+(2-WEEKDAY(DATE($A$1,A2,1))),DATE($A$1,A2,1)+(7-WEEKDAY(DATE($A$1,A2,1)))+2)
お礼
早速の回答ありがとうございます。 うまく行きました。 式の内容を勉強させていただきます。 今後ともご指導よろしくお願いします。
関連するQ&A
- Excelで第一〇曜日を求める方法がわかりません
初めて質問させていただきます。 Excelファイルで毎月お客様に送付状を作成しており、その送付状内に次月作業日程(何月何日何曜日)を載せて送付しております。 弊社は基本的に第1水曜日など曜日で定期日程を組んでいるお客様が多い状態です。 現在カレンダーと睨めっこしながら手入力しておりますが、自動表示したいです。 色々調べた結果 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+1 の数式を使うとできるようなのですが、この数式だと第一週の始まりが日曜日に限定されている?ようです。 例えば、今月2012年10月の送付状を作る時、来月の日程が第一土曜日の場合。 =DATE(YEAR(B2),MONTH(B2)+1,1)+7-WEEKDAY(DATE(YEAR(B2),MONTH(B2)+1,1),2)+6 ※B2には2012/10/8と記入されている。 と入力すると、11月10日と第二土曜日が入力されてしまいます。 この部分を11月3日と表記されるように数式を入力したいのです。 何かいい方法はありませんでしょうか? 分かりにくい文章ですいません。宜しくお願いします。
- ベストアンサー
- Windows 7
- 月末を動的に表示、非表示にする
エクセルで、年、月を入力するとその月の日付が動的に表示されるものを作っています。 月末の問題で、31日の日もあれば30日の日もあるため、 DATE(YEAR(年),MONTH(月)+1,1)-1で月末を求め、IF文で制御しようと、 IF((DATE(YEAR(年),MONTH(月)+1,1)-1)=31,"31","")という式を入れているのですが、 30日の月も、31日の月も日が表示がされません。 どこに問題があるのでしょうか。かなり切羽詰っています。 エクセルの関数は苦手のため、 お詳しい方がいらっしゃいましたらご回答お願いします。
- ベストアンサー
- オフィス系ソフト
- 日付を表示
H3に日付を入力してます。 B6にこの関数を入力してます。 =IF(DATE(YEAR($H$3),MONTH($H$3),1)*DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),DATE(YEAR($H$3),MONTH($H$3),-5+ROW()),"") これをB6~↓にコピペしてます。 なんだか違う気もしますが、無事に表示されてます。 やりたい事は、月によって日数が変わるとき例えば 29日や31日など この時現在は空いたセルによく月の1日や2日が表示されるのを空白にしたいのです。 後上記の関数以外の用方法がありますか! ちなみにC列には、WEEKDAY関数で曜日を表示させてます。 おねがいします。
- ベストアンサー
- その他MS Office製品
- 毎月第二金曜日(Part2)…
今日の午前中も質問させていただいたんですが、その後また行き詰ってしまって…すみませんが教えてください。 入力条件は、a1に"=TODAY()"、これだけです。これでa2に今月の第二金曜日、a3に来月の第二金曜日、a4に再来月の第二金曜日、もし、今日が第二金曜日か、過ぎていたら、a2に来月の第二金曜日、a3に再来月の第二金曜日、a4に再来月の次の第二金曜日の3つの数字を出したいんです。 今月の第二金曜日というのはa2に"=DATE(YEAR(A1),MONTH(A1),15-WEEKDAY(DATE(YEAR(A1),MONTH(A1),2)))"でクリアできました。しかし、今日が第二金曜日を過ぎてた場合と、年をまたいだところで頭の中がワヤになっちゃいました。 ひとつのセルで入れられる数式で教えてください。お願いします。
- ベストアンサー
- オフィス系ソフト
- 【Excel2000】土・日曜日を考慮した日付+α
現在セルB1には『A1に入力した日の月末日付+月末休日の場合は前日』が出るようにしてあります。 セルA1 = 日付 セルB1 = IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=1,(DATE(YEAR(A1),MONTH(A1)+1,0))-2,IF(WEEKDAY(DATE(YEAR(A1),MONTH(A1)+1,0))=7,(DATE(YEAR(A1),MONTH(A1)+1,0))-1,DATE(YEAR(A1),MONTH(A1)+1,0))) ここに『A1が25日以降の場合は翌月20日+翌月20日が休日の場合は後日』という設定を加えたいのですが、可能でしょうか? ・A1 = 2011/07/10 → (結果) B1 = 2011/07/29(金) ・A1 = 2011/07/25 → (結果) B1 = 2011/08/22(月) どうしても不可能であれば別セル(C1など)でも構いません。
- ベストアンサー
- その他MS Office製品
- 特定の日付に対して、画面の表示がなされるように
特定の日付に対して、画面の表示がなされるようにしたいです。 例えば、10月12日、11月3日、11月24日に実際になったときにだけ、画面に表示されるようにして、それ以外の日は、 画面上に表示されないというのは可能ですか。 以下を参考にしています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下のjavascriptの文章を試しましたが、全然うまくいきませんでした。 僕は天才じゃないため、断片的な情報から組み合わせて、 一つのものを作り上げる能力はありません。 ですので、断片的な情報ではなく、 全部書いてくださるとありがたいです。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; }
- ベストアンサー
- JavaScript
- Excel関数で年月を表示する方法
こんにちは。 Excel関数について質問です。 例えば A1 … 2011/11/11 と手入力した時に、 B1 … 2011/11 C1 … 2011/12 D1 … 2012/01 のようにB1~D1が自動で入力させるようにするためには、 どのような関数を使えばよいでしょうか? YEAR、MONTHを使い、年だけ、月だけの表示はできるのですが、 両方を表示させる方法が分かりません。 またIFの使い方もいまいち曖昧で、12月の次が13月になってしまいます。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelの数式について教えてください
Excelの数式について教えてください カテ違いでしたらすみません Excelの数式にすいて質問です 福祉サービスの利用にかかわる仕事をしています 受給者証の支給開始日や、サービスの利用期間の管理をするため、表にまとめています セルB…サービス種別(機能訓練、生活訓練) セルG…利用開始日 セルM…経過月数 サービス利用期間 機能訓練…18ヶ月まで 生活訓練…24ヶ月まで 注)利用開始が4月1日からの場合、4月を1ヶ月目とする。利用開始が4月2日の場合、翌月5月を1ヶ月目とする これらを踏まえて、回答をいただきたいです Excelにて経過月数を表示させ、現在何ヶ月経過しているか・また、機能訓練18ヶ月、生活訓練24ヶ月を超えた場合、「終了」と表示させるため、セルMにこの様な数式を入力しています =IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))) しかしこの状態では、セルGに利用開始日が入っていない時、セルMには「1328」と表示されてしまいます そのため、 =IF(G2="","",IF(OR(IF(B2="機能訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>18),IF(B2="生活訓練",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M"))>24)),"終了",IF(DAY(G2)=1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")+1,DATEDIF(DATE(YEAR(G2),MONTH(G2),1),DATE(YEAR(NOW()),MONTH(NOW()),1),"M")))) というような式を入れましたが、エラーになります 出来たら新規で入力する列には、値が出ないようにしたいので、空欄にしておきたいのです どこが間違っているのでしょうか? アドバイスいただけるとうれしいです。宜しくお願いします
- ベストアンサー
- Windows XP
- ★☆EXCEL 有効期限の警告の関数
本日 H18.2.22 有効期限が、H18.4.1~H18.4.30の人に"期限間近"などの警告をセルに表示させる関数です。 有効期限の2ヶ月前に警告したい。3月は5月が有効期限のセルに警告など。 =IF(DATE(YEAR(D11),MONTH(D11),1)=DATE(YEAR(TODAY()),MONTH(TODAY())+2,1),"期限間近","") しかし、この式ですとH18.3.31までのセルが空欄になってしまいます。 有効期限の2ヶ月前かつ、本日日付からH18.3.31までも警告がでる式にしたいです。 おわかりの方教えてくださーい! よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
再度の回答ありがとうございます。 勉強になります。