プロが教える店舗&オフィスのセキュリティ対策術

年月日の情報があれば何曜日かを特定できますよね?
それでは月日と曜日の情報から、年を特定する方法を教えてください。
例えば、文字列の「7月7日(金)」の情報から「2023(年)」を求める式を。

質問者からの補足コメント

  • HAPPY

    皆さんのお蔭でコンナノ作ってみました。(*^_^*)
    添付図参照(Excel 2019)
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↓↓↓↓↓↓↓↓↓↓↓↓↓

    「月日と曜日の情報から年を特定するには?」の補足画像1
      補足日時:2023/07/08 11:13

A 回答 (8件)

既に、ご自身で数式を作成するレベルまで進めておられるので、余計なお世話ですが、以下の条件で数式を作成していみました。


(1)作業列を使用しない
(2)スピル機能のないバージョンでも使える
(3)配列数式にする必要がない

添付画像をご覧ください。A1セルに以下の数式を記述し、下方向へコピーしています。

=IFERROR(TEXT((AGGREGATE(15,6,ROW(INDIRECT("A"&YEAR(TODAY())-7):INDIRECT("A"&YEAR(TODAY())+7))/(WEEKDAY((ROW(INDIRECT("A"&YEAR(TODAY())-7):INDIRECT("A"&YEAR(TODAY())+7))&"/7/7")*1,1)=6),ROW(A1))&"/07/07")*1,"yyyy/mm/dd(aaa)"),"")

これで、本日の年号から前後7年のうち、「七夕が金曜日」となる全ての年月日が表示されます。
「月日と曜日の情報から年を特定するには?」の回答画像8
    • good
    • 0
この回答へのお礼

凄いッ!
ありがとうございました。m(_._)m

お礼日時:2023/07/08 15:56

こんにちは



すでに、解決したっぽいですが・・

スピル機能が使える環境であれば、どこかのセルに
=FILTER(ROW(1950:2050)&"/7/7",WEEKDAY(ROW(1950:2050)&"/7/7")=6,"")
を入力すれば、1950~2050年の100年間で、7/7が金曜日になる日付をスピルすることができます。(正確には101年間ですが)

ご参考までに。
    • good
    • 0
この回答へのお礼

ありがとうございます。m(_._)m

お礼日時:2023/07/08 15:55

年,月,日,曜日


1900,7,7,=text(weekday(date(A2,B2,C2)),"aaa")
=A2+1,=B2,=C2,=text(weekday(date(A3,B3,C3)),"aaa")
=A3+1,=B3,=C3,=text(weekday(date(A4,B4,C4)),"aaa")
...

という表を書いて、曜日をフィルター機能なり FILTER 関数で絞る
    • good
    • 0
この回答へのお礼

ありがとうございます。m(_._)m

お礼日時:2023/07/08 15:54

良いじゃないですか!


ココまで出来ればご立派かと。
    • good
    • 0
この回答へのお礼

ありがとうございます。m(_._)m

お礼日時:2023/07/08 15:54

shut0325です。

お礼拝見しました。

>取り敢えず「前後7年以内」ですかね?
いえ、それはあなたが何を求めているか、得られたものをどう利用するつもりでいるかで変わると思います。

例えば、あなたが向こう30年(2023~2052)、自分の誕生日が日曜日なのは何回あり、いつなのかを知りたいというのであれば、”取り敢えず「前後7年以内」”は範囲設定としては不適切ですよね?

あなたが求めているのが、今日以前(というか、特定の年の以前(或いはより前)か、以降(あるいは より後)か)で、その条件にヒットする最近の1件というなら、特定は簡単です。
    • good
    • 0
この回答へのお礼

》 いえ、それはあなたが何を求めているか、…で変わると思います。
仰る通りですね。
ありがとうございました。m(_._)m

お礼日時:2023/07/08 11:20

月日と曜日の情報から年を特定するためには、追加の情報が必要です。

月日と曜日だけでは年を正確に特定することはできません。

しかし、指定された例のように「7月7日(金)」の情報が与えられた場合、現在の年から推測することは可能です。以下はPythonのコード例です。

python                      Copy code

import datetime

def determine_year(month, day, weekday):
current_year = datetime.datetime.now().year
target_date = datetime.datetime(current_year, month, day)
target_weekday = target_date.strftime("%A")

while target_weekday != weekday:
current_year -= 1
target_date = datetime.datetime(current_year, month, day)
target_weekday = target_date.strftime("%A")

return current_year

# 月日と曜日の情報
month = 7
day = 7
weekday = "Friday"

# 年を特定する
year = determine_year(month, day, weekday)
print(year)

上記のコードでは、まず現在の年を取得し、指定された月日と曜日の情報をもとに、現在の年から遡って該当する曜日を持つ日付を探します。見つかった場合、その年を特定として返します。

ただし、この方法は推測に過ぎず、正確な情報ではありません。正確な年を特定するには、より具体的な情報が必要となります。
    • good
    • 0
この回答へのお礼

私、マクロ音痴なのです
でも、ありがとうございました。m(_._)m

お礼日時:2023/07/08 11:10

7月7日(金)というのは2023年のみとは限りませんので、単年の特定はできません。



例の「7月7日(金)」が該当するのは、2000年以降だけでも、
2000 2006 2017 2023 2028 という風になっています。

何かしら工夫して、他の条件を付与して絞り込むような形した方が良いと思います。
    • good
    • 0
この回答へのお礼

取り敢えず「前後7年以内」ですかね?

お礼日時:2023/07/08 10:29

計算式は分かりませんが計算サイトによると7月7日金曜日の該当年は以下となります。



1900年代
05, 11, 16, 22, 33, 39, 44, 50, 61, 67, 72, 78, 89, 95

2000年代
00, 06, 17, 23, 28, 34, 45, 51, 56, 62, 73, 79, 84, 90

バラツキはありますが単純に平均して7年に一度のペースという気がしますが。
    • good
    • 0
この回答へのお礼

なるほど、私の迂闊さが露呈していましたね。(*^_^*)

お蔭様で、現在から7年以内の条件を付ければ 2023 というわけですね?
情報多謝です。m(_._)m

お礼日時:2023/07/08 10:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!