• ベストアンサー

Excelで「その年の最初の土曜日」

Excelで、土日だけを抽出したリストをつくりたいんですが、どこかのセルに「西暦」を入力すると、その年の一番最初の土曜日を表示させる、というロジックはどう作れば良いのでしょうか。 その年の最初の土曜日さえ出れば、後はずっと、その日付+1が日曜だし、+7が次の土曜なので、指定できるのですが・・・。 よろしくお願いいたします。

  • uekido
  • お礼率86% (217/251)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

こんにちは。 A1セルに2011などのように記入して =IF(A1="","",FLOOR(DATE(A1,1,0),7)+7)) とかで計算できます。

uekido
質問者

お礼

ありがとうございます! これを採用しようと思ったのですが、・・・今年のように日曜が1/1に来る年の場合、土曜を取得したのでは1/1が落ちてしまうのでだめで・・・。 小さい値のほうを表示させるようIF設定しましたが、それじゃ昨年の日付も表示されてしまう(泣)そりゃそうか・・・。 しばらく考えたのですが自力だと苦しいし、ちょっと時間が差し迫っているので、また新しく質問させていただきたいと思います。 皆様ありがとうございました。 たいへん勉強になりました。

その他の回答 (4)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.5

では・・私はあえてマクロで(笑) 縦一列(B列)に羅列バージョン。 Sub test() Dim i As Integer, j As Integer Dim myDay As Date  j = 1  For i = 1 To 366   myDay = DateSerial(Cells(1, 1), 1, i)    If Year(myDay) <> Cells(1, 1) Then Exit For    If Weekday(myDay) = 7 Then     Cells(j, 2) = myDay     j = j + 1    ElseIf Weekday(myDay) = 1 Then     Cells(j, 2) = myDay     j = j + 1    End If  Next End Sub 土曜日をB列、日曜日をC列バージョン。 Sub test2() Dim i As Integer, j As Integer Dim myDay As Date  j = 1  For i = 1 To 366   myDay = DateSerial(Cells(1, 1), 1, i)    If Year(myDay) <> Cells(1, 1) Then Exit For    If Weekday(myDay) = 7 Then     Cells(j, 2) = myDay    ElseIf Weekday(myDay) = 1 Then     Cells(j, 3) = myDay     j = j + 1    End If  Next End Sub どちらも、A1に「西暦年」が入力されているのが条件です。 こんな感じで。

uekido
質問者

お礼

わー、ありがとうございます! 大作ですね。 今回マクロは使いませんが(笑)大事に保存しときます!

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

仮に A1セルに 年 2012 と数値が入っているとして =DATE(A1,1,8-WEEKDAY(DATE(A1,1,1))) では、いかがでしょうか? その年の1月8日まで進んで、その年の1月1日のWeekday関数分だけ戻る Weekday関数の戻り値についてはHelpででも確認してください。

uekido
質問者

お礼

ありがとうございます。 なるほどですね・・・。その手もありますか。 先にお答えいただいた方のにも書いたんですが、私の考え違いで、土曜日だけを取得して後を+1とかで行こうと思うと、1/1(日)が落ちるので(笑)、実際には日曜日も取得し、小さい方を表示させるようにしなきゃいけないですね。 参考になりました。

回答No.2

A列に1/1~12/31を入力 B列: =IF(WEEKDAY($A1,2)>5,"H","") 以下、コピー オートフィルタで、B列が"H"なものだけを抜き出す。 土日だけがコピーできる。オシマイ、、、

uekido
質問者

お礼

ありがとうございます。 なるほど(笑) スケジュール表がつくってあるという事は、日付一覧はある訳ですからね・・・。 参考になります。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

A1セルに「西暦」を入力するとして、 =DATE(A1,1,1)+13-WEEKDAY(DATE(A1,1,1),2)

uekido
質問者

お礼

ありがとうございます! ところが自分でやってみて気づいたんですが、2012年のように1/1が日曜日だった場合、土曜日を取得する数式だけだと、1/1(日)が落ちてしまう! 今年がそんな年だったから気づきましたが、危ないとこでした。 なので、いただいた数式と、日曜日を取得する数式を並べ、IFでもって小さいほうを表示させるようにすれば良いんですね。 たいへん参考になりました!

関連するQ&A

  • Excel「その年の最初の土・日、どちらか早い方」

    Excelで、西暦をどこかのセルに指定するだけで、その年の土日だけを抽出したリストをつくりたいと思います。 当初、最初の土曜日がわかればあとは順次+1とかで割り出せるな、と思っていたんですが・・・。 ところがそれだと、2012年のように、1/1が日曜日の場合、1/1(日)が落ちてしまうんです。 という事は、最初の土と日を比べて、小さいほうを表示させる、しかも指定年の分に限る(前年のが表示されてはいけない)というロジックをつくらなくてはいけないのですね。 ここで手に負えなくなってしまいました。お助けいただけたら幸いです。 ちなみに前質問はこちらで、皆さんすばらしい回答をくださったのですが・・・すみません。 http://okwave.jp/qa/q7757128.html

  • エクセルで6月30日と入力したときの西暦が前の年になるのは?

     今日の日付は西暦2005年1月13日ですが、エクセルのセルに単に「6月30日」と入力した際、表示形式を西暦にしてみると「2004年」で表示されます。  2005年の1月1日を堺に、日付を入力した際の西暦は全て2005年になるとばかり思っていたので、最初は私のパソコン時計が狂っているのかと思いましたが、そうではないようです。  ということは、年指定せず明日以降の日付を入力した場合は、昨年の西暦になると思っていいのでしょうか?

  • エクセルのリストボックスの値によって背景色の変更をしたい

    エクセルで〔データ-入力規則〕で入力値の種類を「リスト」に設定すると、そのセルは指定した値からリストで選択(または入力)できるようなセルになります。 それはわかるのですが、お聞きしたいのはそのリストから選択した値によってセルのバックカラーを変更させる方法です。 例えば.... あるセルに「日曜日」~「土曜日」までの値を選択できるようなセルを作ったとします。 それでリストから日曜日を選択した場合はそのセルの背景色を「赤」に、 リストから土曜日を選択した場合はそのセルの背景色を「青」にしたいのです。 以前、そういうエクセルシートを見たことがあるのですが、 そのやり方がわかりません。 教えてください。お願いしますm(__)m

  • エクセルについて

    エクセルの形式でたとえば日付と年でA1セルに1998.01.04 A2セルに1998.01.05 でこの形式で土曜日と日曜日にかかる日付だとのぞいて祝日はいれて連続して同じ形式で1999年までいっきに簡単にエクセルにだせる方法はありますか?それが無理なら土曜日日曜日自分からけしていいのでいッきにやろうとしたら2月の切り替え日に1998.01.32とでてきて次も33日とつづいてでてきて1998.02.01とでてこないのですが何かいい方法はないのですか?

  • エクセルで日付を入れる方法について質問をしたいのでよろしくお願いします

    エクセルで日付を入れる方法について質問をしたいのでよろしくお願いします。 まず始めにA1セルに日付を入れるために右の記述をしました。yyyy"年"m"月"d日" すると2010年4月29日と表示されましたが、その際B1セルに曜日を自動的に入力できるようにするには どのようにすれば良いでしょうか? なぜ、日付と曜日をそれぞれのセルに入力をしたいかというと、、条件付指定でしたでしょうか? 土曜日や日曜日の箇所を赤色や、緑などに色分けをしたいと考えております。 よってその操作方法についても、ご指導をお願いできませんでしょうか? どなた様か、ご指導の程よろしくお願いします。

  • 【エクセル】毎月土日・祝のみを表示したいです!

    毎月の土曜日と日曜・祝日の日付を自動入力したいのですが、 皆様の知恵を貸して下さい。 ■やりたい事 ・年度、月をドロップダウンリストで選択すると、土日祝枠にその日付が 表示される (ボタンは写っていませんが、リストは設置してあります) *追記 月毎に土曜、日曜祝日の回数が違うので大目に枠を用意し、 余った枠(8/25の下)はその都度削除します。 画像では 8/3を、A列に「月」、 B列に「/」、 C列に「日」 と列を分けてありますが、A3セル1つのセルに反映されても かまいません。 宜しくお願いします。

  • エクセル 日付自動入力?

    エクセル2000を使用しております。 例)セルA1に 8/1 と入力したら   セルB1以降には自動で 8/2 セルC1には8/3・・・・・ 以上のように連続2週間分の日付が入力されていく。 但し 土曜日、日曜日の日付は入力されないようにする。 以上のような自動入力をする関数、もしくはVBAにての 命令文を教えていただきたいのですが・・ よろしくお願いいたします。

  • Excel 日付

    エクセルで日付順に並べ替えをしたいのですが、 2012年10月30日 2012年11月4日 2012年1月25日 2012年4月14日 2012年7月20日 の様に、10月、11月が優先されてしまいます。 正しく表示されるには、どうしたら良いでしょうか? 西暦と月を別々のセルに表記しなければならないでしょうか? データは“セルの書式設定”で、“日付”を指定しています。

  • Excelで西暦の日付から「和暦のみ」を抽出する方法を教えてください。

    エクセル初心者です。 エクセルのオートフィルタを使って、「平成19年」「平成20年」「平成21年」ごとに表示させたいのですが…。 セルには以下のように日付が入力されているとします。   A      B      C 2007/3/14 2007/3/16 2008/3/18 2008/3/14 2009/3/16 2009/3/18 これを書式設定で「平成19年3月14日…」と和暦で表示してみても、オートフィルタでは日ごとになるだけで、「年ごと」にはなりません。 そこで、B列にA列のデータから和暦のみを抽出したらいいのではないかと考えたのですが…初心者ゆえにその方法を思いつくことができません。 西暦の日付から「和暦のみ」を抽出する事はできるのでしょうか?

  • Excelで何日後かを出したいのですが

    いつもお世話になっています Win2000 Office2000です。 A1に日付を入れるとB1に何日後かを出すようにしたのですが、過去ログなどを見てもし機能的にどうにかなればと思い質問させて頂きました。 B1のセルには 「=A1+30」と入れ30日後が計算できるようにしてあります。ここでネックなのが30日後が土日祝日だった場合は前の平日に繰り上がることです。土曜日曜なら金曜日に、祝日ならその前日の平日にです。カウントする日数は土日も含むため、逆に条件付書式などで土日祝日の場合は色をつけるようにしたり、C1のセルに土日祝日だったらフラグが立つようにしたりとやり方が色々あるとは思いますが、できれば簡単にしたいので(条件付書式はメモリが少ないので避けたいんです。)もしよい方法をご存知でしたらご教授いただけたらと思います。 どうぞよろしくお願い致します。

専門家に質問してみよう