プロが教えるわが家の防犯対策術!

1から260までの数字があります。
この数字が生年月日毎に割り当てられています。
1から260までの数字は順番にやってきます。
(例:1914年1月1日➡︎223だとしたら
   1914年1月2日➡︎224というように順番に巡り、
   1914年2月7日➡︎260までいったら
   1914年2月8日➡︎1 というように260の次はまた1に戻る・・・を繰り返します。

この、生年月日(西暦、月、日)に対応する数字を導き出す方法を教えて下さい!

また、ルールのようなものがあるのですが
・52年に一度は同じ数字が割り当てられることになります。
(1964年と2016年は同じ誕生日の人は同じ数字になります)
・生年月日は1914年1月1日から104年分(2017年12月31日)までの対応の数字を出せるようにしたいです。
・うるう年の3月31日と4月1日は同じ数字になります。

Excel初心者であまり詳しいことはわかりませんが、どうぞお力を貸して下さい!!
宜しくお願い致します。

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

  • この数字を出すこういう方法もあると手元の資料に書いてありました。
    結果的に同じ数字がでるはずですが、こういうやり方もあるようです。
    こちらの方が計算式は出しやすいでしょうか?


    1. 年(西暦)と月の交わる数字を下記の表から探す
    2. 該当する数字と(誕生日の)日にちを足し合わせたものが求めたい数字となる
    ただし、
    ・出てきた数字が260より大きくなる場合は260を引く
    ・うるう年生まれの3月1日〜3月31日の人は算出した数字に「1」を足す
    (例)1916年3月1日→231+1(日にち)+1(うるう年分)=233


    どうぞ宜しくお願い致します。

    「《Excel》生年月日から特定の数字を導」の補足画像1
      補足日時:2016/02/14 21:39

A 回答 (11件中1~10件)

せい数のわり算で【あまり】の意味も分からない方に回答するのも気が引けますが、


A1セルに 1914/1/1 などの日付を入力
=(MOD(A1-"1913/5/23"-INT((YEAR(A1)-1912)/4)+AND(MOD(YEAR(A1),4)=0,MONTH(A1)<=3)-1,260)+1)
ででます。ただし、うるう年ではない西暦1900年以前、および、2100年以降は使えません。

意味不明だろうけど解説
起点(0点)の作成:A1-"1913/5/23"
うるう年の対応:-INT((YEAR(A1)-1912)/4)
うるう年の対応~3月:+AND(MOD(YEAR(A1),4)=0,MONTH(A1)<=3)
解が0への対応 :-1 と +1
日付表示への対応 : =(~~~)の前後のかっこ。書式で対応でもOK

ちなみに、質問者の補足コメントの画像において2066年は間違っています。
「《Excel》生年月日から特定の数字を導」の回答画像8
    • good
    • 1
この回答へのお礼

理解力の足りない私にご丁寧に教えて下さり本当に感謝しております。

上記計算式を入力したところ、無事にできました!!
本当に感動です!!
なんとお礼を言ったら良いのか・・。
ありがとうございました!!!

この度はこちらで本当にたくさんの皆様に教えて頂き、無事に私の作りたかったものが
完成しました。
これで、今後は飛躍的に楽になります。

感謝をこめて・・・。

お礼日時:2016/02/15 18:22

>52年に一度は同じ数字が割り当てられることになります



これは更に13を引くのではないですか?
    • good
    • 0
この回答へのお礼

52年に一度は必ず同じ数字になるのは決まりとなっております。

お礼日時:2016/02/18 09:46

そもそも今回のルールは、年(1月1日~12月31日)ではなく、年度(4月1日~翌3月31日)と考えた方が、分かりやすいと思います。

(年度の考え方は、分かりますよね?)

具体的には、次の①②を求め、その合計を260で割った余りに+1するイメージです。
①過年度の日数=起点から前年度までの年度数×365日(閏日は考慮しない)
②当年度の日数=当年度4月1からの経過日数(閏日を考慮する)

上記の仕様でユーザ関数を作るとこんな感じになります。
引数MyBirthday は、誕生日(日付型)のセルを指定してください。「例、=MyBirthNum("A1") 」

Function MyBirthNum(MyBirthday As Variant) As Variant
Const Kiten As Long = 1913 '起点1913年4月1日
Const Chousei As Long = 207 '1914年1月1日を223とするための調整比数
Dim Nendo As Long
Dim Days As Long
Nendo = Year(MyBirthday)
If Month(MyBirthday) < 4 Then
Nendo = Nendo - 1
End If
Days = (Nendo - Kiten) * 365
Days = Days + DateDiff("d", DateValue(Nendo & "年4月1日"), MyBirthday) + Chousei
MyBirthNum = Days Mod 260 + 1
End Function
    • good
    • 1
この回答へのお礼

ご丁寧に教えてくださって本当にありがとうございました。
年度はわかります(汗)
私が使っているのはMacのNumbersなので、ちょっと上記の式の入力の仕方が
よくわかりません。(Numbersは関係ないのかもしれませんが、それすらちょっと意味不明です)


現在はNO8のCoalTarさんの教えて下さった
=(MOD(A1-"1913/5/23"-INT((YEAR(A1)-1912)/4)+AND(MOD(YEAR(A1),4)=0,MONTH(A1)<=3)-1,260)+1)

という式で使っています。
明日、念のため100年分の3月31日と4月1日のナンバーを出してみて、
変になっていないか確かめてみようと思いますが、それで大丈夫だったら
この計算式で使って大丈夫でしょうか?

何がなんだか、さっぱりわからなくなってしまいました・・・。
すみません・・・。
教えていただけると嬉しいです。

お礼日時:2016/02/17 23:31

No7です


4で割り切れる年がうるう年ですが、例外として400で割り切れる年は平年である。
この例外処理が漏れていたので、改めて、例示します。
今回の式の見かけは、ダラダラ長くて複雑ですが、初歩的な関数を使用しました。

作成手順
1. A1セルに 文字 生年月日 を入力 
2. B1セルに 文字 番号.  を入力
3. A2セルに 日付 1914/1/1 を入力
4. B2セルに 数字 223  を入力
5. A2セルに 日付 1914/1/2 を入力
6. B3セルに 式  下記の式 をコピー 
 =IF(MOD(YEAR(A3),400)=0,IF(B2=260,1,B2+1),IF(MOD(YEAR(A3),4)<>0,IF(B2=260,1,B2+1),IF(AND(MONTH(A3)=4,DAY(A3)=1),B2,IF(B2=260,1,B2+1))))
7.A3セルとB3セルを選択し、下へ オートフィルコピーする、 以上です。

【式の説明抜粋】
平年判定   MOD(YEAR(A3),400)=0
   同上   MOD(YEAR(A3),4)<>0   
4月1日判定 AND(MONTH(A3)=4,DAY(A3)=1)   


【注】
1.添付図は 完成した表の一部のみ表示しました。
2.No8さん指摘の、質問者の補足コメントの画像において2066年は間違っています。
原因は冒頭に書いた、例外処理をしていない、だろうと思います。
3.>1964年と2016年は同じ誕生日の人は同じ数字になります
間違いないですか、
「《Excel》生年月日から特定の数字を導」の回答画像9
    • good
    • 1
この回答へのお礼

何度も色々とご丁寧にありがとうございました!
大変申し訳ありません。
NO8のCoalTarさんの教えて下さった式で無事に解決した為、ベストアンサーをつけて終了したつもりでいたのですが、うまく反映されていなかったようで、まだ未解決のままになっていたようです。
本当にすみませんでした。

CoalTarさんの方法ですでに解決したと思っていたので、すでに一度作成した表も削除してしまいました。
確かに2066年は間違っていました。

3.>1964年と2016年は同じ誕生日の人は同じ数字になります
間違いないですか、

はい、その通りです。
52年に一度で同じ数字になります。

お礼日時:2016/02/17 19:38

一例です。

「《Excel》生年月日から特定の数字を導」の回答画像7
    • good
    • 1
この回答へのお礼

教えて下さってありがとうございます。
Excelの知識が乏しくて・・・。
残念ながら私には上記表をどのように自分の表のセルと対応させたらよいのかわかりませんでした。
せっかく教えて下さったのに申し訳ありません。

お礼日時:2016/02/14 21:42

「macのNumbers」とやらを全く知らないけど、エラーメッセージから判断して、式を次のように変更したらどうなりますか?


=IF(A1>0,IF(MOD(A1+48,260)=0,260,MOD(A1+48,260)),"")

それから、私の記憶が正しければ、日付連番(Serial Number)が次のように異なりませんか
Windows版 1900/1/1 の S.N. が 1
Mac版__ 1904/1/1 が S.N. が 0
これが正しければ、更に式の変更を要するけど、今はエラーが回避されるか否かだけを。
    • good
    • 1
この回答へのお礼

何度もご丁寧にありがとうございます。
上記式を入れてみましたが、「データタイプが異なっているため、日付と数字は比較できません。」と出てしまいました。

>それから、私の記憶が正しければ、日付連番(Serial Number)が次のように異なりませんか
Windows版 1900/1/1 の S.N. が 1
Mac版__ 1904/1/1 が S.N. が 0

すみません。私には意味がちょっとよくわかりませんでした(涙)

お礼日時:2016/02/14 20:45

Excelじゃなくって算数ですが


260と365の最小公倍数は18,980
1年を365日として割ると52年が出る
Excelで計算させると
=LCM(260,365)/365

>(1964年と2016年は同じ誕生日の人は同じ数字になります)
>・うるう年の3月31日と4月1日は同じ数字になります。
4月1日に調整すると3月の誕生日の人のみズレが生じませんか?
・うるう年の2月29日と3月1日は同じ数字になります。
ならわかるのですが、、、
    • good
    • 1
この回答へのお礼

色々教えて下さってありがとうございます。

手元の資料を確認してみましたが、やはり、うるう年の3月31日と4月1日は同じ数字にするようです。

ここで求めた1〜260の数値を使ってさらに色々みていくのですが、その際やはりうるう年の「3月生まれ」の人は一定の法則に従ってプラスしたりマイナスしたりする必要はあるみたいです。

お礼日時:2016/02/14 20:42

[No.3お礼]へのコメント、


》 うちはmacのNumbersを使っているので、関係ありますでしょうか?
知りません!
なぜソレを最初に仰らなかった!
此処は「Excel(エクセル)」の部屋でっす!
    • good
    • 0
この回答へのお礼

すみません。
Numbersは使用している人が本当に少ないので、Numbersで検索しても全く出てきません。
関数の使い方などはExcelと同じなので、こちらでお世話になっておりました。
ただ、計算式を入力する時にNumbersはそのセルをクリックして入れるのですが(そうしないとどの表のセルなのかを認知しないようです)そこがExcelと違うのでしょうか?
Excelは昔会社で使っていましたが、今はうちにないので、ExcelとNumbersがどのように違うのかもよくわからなくて・・・。本当に申し訳ありません。

お礼日時:2016/02/14 14:57

[No.2お礼]へのコメント、


》 セルF2に生年月日を2016/2/14と入力し、上記計算式を
》 表示させたいセルに貼り付けてみたのですが…
私の式がセル A1 を参照しているからには、順序が間違ってます!
先ずは、セル A1 に日付を入力して、ソノマンマの式を試してみることでッす!
念のために申し上げておきますが、式を自分で勝手に入力せずに、このページの式をコピーして貼り付けませうネ。

》 日付の入れ方がまずいのでしょうか?
上の結果が判明してからにしませう。
    • good
    • 0
この回答へのお礼

何度も教えて下さってありがとうございます。
A1セルに日付を入力してB2セルに計算式を入れてやってみたのですが
「引数1 / IFはブール値であることが必要ですが、セルA1に日付が含まれています」
と出てしまいます。

うちはmacのNumbersを使っているので、関係ありますでしょうか?

お礼日時:2016/02/14 14:15

別解です。


=IF(A1,MOD(A1+48,260)+260*(MOD(A1+48,260)=0),"")
    • good
    • 1
この回答へのお礼

早速ありがとうございます。
セルF2に生年月日を2016/2/14と入力し、上記計算式を表示させたいセルに貼り付けてみたのですが
「引数1 / IFはブール値であることが必要ですが、セルF2に日付が含まれています」というように表示されてしまいます。
日付の入れ方がまずいのでしょうか?

お礼日時:2016/02/14 12:43

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