• ベストアンサー

エクセル

A1に入力規制のリスト表示で2016年~2018年 B1に入力規制のリスト表示で1月から12月を入力できるにします 2016年9月と入れたときA2に日数とB2に 月曜日、水曜日、金曜日を抽出したいのですが A2  何日 B2 曜日 A3  何日 B2 曜日 A4  何日 B2 曜日 A5  何日 B2 曜日 ・ ・ ・ どうやればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>どうやればいいでしょうか? どうしたいのかが読み取れません。 万年カレンダーを作成したいようにも受け取れますが、A2 何日 B2 曜日、A3 何日 B2 曜日、A4 何日 B2 曜日、・・・・ではつじつまが合いません。 尚、「2016年9月と入れたときA2に日数」の日数とは何時を起算として何時までの日数なのかわかりません。カレンダーであればA2は指定年月(A1セル、B1セル参照)の初日(1日)とすべきです。 A1に西暦で年数、B1に月数を入力されているときにA2以下のセルに指定年月の初日を自動的に計算して表示し、B2以下のセルにA列に対応する曜日を表示すれば2016年1月から2018年12月までの万年カレンダーができます。 A2へは次の数式を設定して表示形式をユーザー定義で d"日" とします。 =IFERROR(DATEVALUE($A$1&$B$1&ROWS(A$2:A2)&"日"),"") B2へは次の通式を設定して表示形式を aaaa とすればA2セルに対する曜日が表示されます。 =A2 A3セルへは次の数式を設定し、表示形式はA2と同じにします。 =IF(OR(DAY(A2+1)=1,A2=""),"",A2+1) B3はB2セルをコピーします。 A4、B4セル以下はA3、B3セルを必要数下へコピーすれば完成です。 添付画像はExcel 2013で万年カレンダーを作成したものです。(7行目~28行目を非表示)

jikkenn
質問者

お礼

説明が下手で申し訳ないです 設定してもらった通りにしたら できました 大変感謝してます ありがとうございます

その他の回答 (7)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.8

 今仮に、A1セルに例えば 2016年 の様に「年」付きの文字列データで西暦年を入力し、B1セルに例えば 1月 の様に「月」の文字が付いた文字列データで月を入力するものとします。  その場合、まずA2セルにA2セルに次の関数を入力して下さい。 =IFERROR(($A$1&$B$1&ROWS(A$2:A2)&"日")/(RIGHT($A$1,1)="年"),"")  次に、A2セルの書式設定の表示形式を d"日" に設定して下さい。  次に、B2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT($A2,"aaaa"))  次に、A2~B2のセル範囲をコピーして、A3~B32のセル範囲に貼り付けて下さい。  これで、A1セで年を、B1セルで月を選択する事で、A2~A32のセル範囲に日付が、B2~B32のセル範囲に曜日がそれぞれ表示されます。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.7

>月曜日場合A2に日にちを出して、B2に月曜日 >水曜日だった場合A3に日にちを出して、B3に月曜日、 >金曜日だった場合A4に日にちを出して、B4に月曜日 >という順番にだしていきたいのです 質問の内容がますます混乱してきました。 要件を簡潔明瞭に説明してください。 >A2・・・1日、B2・・・月曜日 >A3・・・3日、B3・・・水曜日 >A4・・・5日、B4・・・金曜日 >A5・・・8日、B5・・・月曜日 >というふうにしていきたいのです 前述の内容と符合しません。 >それか >8月の月曜日、水曜日、金曜日を >シート1のA列に出力できたら嬉しいです >A1・・・8月1日 >A2・・・8月3日 >みたいな感じです 指定年月の月水金曜日だけを抽出すればよいのでしょか? 質問の通りA1セルは西暦年を、B1セルは月数を入力するものとしてA2セル以下に月水金曜日のみ抽出方法を再検証しました。 結果は添付画像の通りです。 A2の数式は下記のとおりです。 =IFERROR(INDEX(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1,SMALL(INDEX(MOD(WEEKDAY(($A$1&$B$1&"1日")*1+ROW($A$1:$A$31)-1,1),2)*50+ROW($A$1:$A$31),0),ROW(A1))),"") B2の数式は回答No.3と同じです。 =A2 A2セルとB2セルを選択してオートフィルで16行目までコピーしました。 セルの表示形式は回答No.3と同じです。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 A1は2016でなく2016年ですか?  B1も同様に1でなく1月でしょうか?  A2が1日、A3が2日でいいのでしょうか?  もしそうなっているのでしたら、まずA2セルに次の関数を入力して下さい。 =IF(AND(RIGHT($A$1,1)="年",ISNUMBER(($A$1&$B$1&ROWS(A$2:A2)&"日")+0)),ROWS(A$2:A2)&"日","")  次に、B2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT($A$1&$B$1&$A2,"aaaa"))  次に、A2~B2のセル範囲をコピーして、A3~B32のセル範囲に貼り付けて下さい。  これで、A1セで年を、B1セルで月を選択する事で、A2~A32のセル範囲に日付が、B2~B32のセル範囲に曜日がそれぞれ表示されます。  或は逆に、 A1は2016年でなく2016ですか?  B1も同様に1月でなく1でしょうか?  A2が1日、A3が2日でいいのでしょうか?  もしそうなっているのでしたら、まずA2セルに次の関数を入力して下さい。 =IF(ISNUMBER(($A$1&"/"&$B$1&"/"&ROWS(A$2:A2))+0),ROWS(A$2:A2)&"日","")  次に、B2セルに次の関数を入力して下さい。 =IF($A2="","",TEXT($A$1&"/"&$B$1&"/"&ROWS(A$2:A2),"aaaa"))  次に、A2~B2のセル範囲をコピーして、A3~B32のセル範囲に貼り付けて下さい。  これで、A1セで年を、B1セルで月を選択する事で、A2~A32のセル範囲に日付が、B2~B32のセル範囲に曜日がそれぞれ表示されます。

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.5

>A1に2016年と入力B1に8月と入力したときに 自動的に出力したいのです 月曜日場合A2に日にちを出して、B2に月曜日 水曜日だった場合A3に日にちを出して、B3に月曜日、 金曜日だった場合A4に日にちを出して、B4に月曜日 という順番にだしていきたいのです A2・・・1日、B2・・・月曜日 A3・・・3日、B3・・・水曜日 A4・・・5日、B4・・・金曜日 A5・・・8日、B5・・・月曜日 というふうにしていきたいのです それか 8月の月曜日、水曜日、金曜日を シート1のA列に出力できたら嬉しいです A1・・・8月1日 A2・・・8月3日 みたいな感じです ***************************************** すでに回答にありますように セルのデータが日付データであれば、 曜日は表示形式(aaa でもaaa"曜日"でも)で設定できますので、 問題は日付をどうするかということだけになります。 A1の表示形式を#”年"、B1の表示形式を#"月"としておけば A1のデータは2016 B1のデータは8 という単なる数字ですから a2は=(A1&"/"&B1&"/1")*1 b2は=a2 a3,b3以降はそれぞれ=a2+1,b2+1で可能です。 小の月は月末の処理が面倒ですので、 表示しない場合はそれなりの工夫が必要です。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

回答No.3の一部訂正です。 A2セルの数式を次のように訂正できます。 =IFERROR(DATEVALUE($A$1&$B$1&ROWS(A$2:A2)&"日"),"")         ↓ =IFERROR(DATEVALUE($A$1&$B$1&"1日"),"")         ↓ =IFERROR(($A$1&$B$1&"1日")*1,"") 何れの数式も計算結果は同じです。

jikkenn
質問者

補足

説明不足で申し訳ございません 例 A1に2016年と入力B1に8月と入力したときに 自動的に出力したいのです 月曜日場合A2に日にちを出して、B2に月曜日 水曜日だった場合A3に日にちを出して、B3に月曜日、 金曜日だった場合A4に日にちを出して、B4に月曜日 という順番にだしていきたいのです A2・・・1日、B2・・・月曜日 A3・・・3日、B3・・・水曜日 A4・・・5日、B4・・・金曜日 A5・・・8日、B5・・・月曜日 というふうにしていきたいのです それか 8月の月曜日、水曜日、金曜日を シート1のA列に出力できたら嬉しいです A1・・・8月1日 A2・・・8月3日 みたいな感じです

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

A1は2016でなく2016年ですか?B1も同様に1でなく1月でしょうか? A2が1日、A3が2日でいいのでしょうか? A1,B1が数値だけなら A2=ROW(A1) ※表示形式は #"日" B2=TEXT(DATE($A$1,$B$1,A2),"aaaa") でこの式を、A29:B29までコピー A30=IF(DAY(DATE($A$1,$B$1+1,0))>=ROW(A29),ROW(A29),"") B30=IF(A30="","", TEXT(DATE($A$1,$B$1,A30),"aaaa")) でこの式を、A32:B32までコピー A1,B1が年,月の文字付なら A2=TEXT(ROW(A1),"#日") B2=TEXT(DATEVALUE($A$1&$B$1&A2),"aaaa") でこの式を、A29:B29までコピー A30=IF(DAY(EOMONTH(DATEVALUE($A$1&$B$1&"1日"),0))>=ROW(A29),TEXT(ROW(A29),"#日"),"") B30=IF(A30="","", TEXT(DATEVALUE($A$1&$B$1&A30),"aaaa")) でこの式を、A32:B32までコピー

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは A1には「年」、B1には「月」という文字まで入っているなら、 A2に =IFERROR(TEXT(DATEVALUE($A$1&$B$1&ROW(A1)&"日"),"d日"),"") B2に =IFERROR(TEXT(DATEVALUE($A$1&$B$1&ROW(A1)&"日"),"aaa曜日"),"") で、それぞれA2:B2を32行目までフィルコピーで。