- ベストアンサー
【困っています】エクセル関数について
とある製品の製造年月日の表示で4桁の数字を使用したものがあります。 例えば、1153→2001年 15週 水曜日 5366→2005年 36週 土曜日 等、 最初の1桁目が年数の下一桁、間の2、3桁がその年の何週目か、 最後の1桁が1~7でそれぞれ月~日に対応しています。 そこで、質問ですが、 上記の様な数字4桁を関数によって、○○年○○月○○日という風に自動変換したいのです。 どなたかご教授お願いします。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
No.4です! たびたびごめんなさい。 前回の説明で >(2)「8」から(1)で得たWEEKDAY関数の数値を引いた日がその年の第2週目の日曜日となる。 の部分が違っていました。 >(2)「9」から(1)で得たWEEKDAY関数の数値を引いた日がその年の第2週目の日曜日となる。 が正解です。 それに基づくとB2セルに数式も変わってきます。 結果的には同じコトになるのですが・・・ B2セルを =IF(A2="","",C2+9-WEEKDAY(C2)+7*(MID(A2,2,2)-2)+RIGHT(A2,1)-1) としてください。 何度も失礼しました。m(_ _)m
その他の回答 (8)
- KURUMITO
- ベストアンサー率42% (1835/4283)
A1セルから下方にお示しのデータがあるとしてB1セルには次の式を入力して下方にオートフィルドラッグします。 =DATE(LEFT(A1,1)+2000,1,1)+(MID(A1,2,2)-1)*7+1-WEEKDAY(DATE(LEFT(A1,1)+2000,1,1))+IF(RIGHT(A1,1)=7,0,RIGHT(A1,1))
- kagakusuki
- ベストアンサー率51% (2610/5101)
その番号は西暦何年頃から使われているのでしょうか? もし、10年程前から使われている場合には、同じ番号となる日付が複数存在するため、番号の情報だけから、元の製造年月日を計算する術はありません。 製造番号が「1153」となる日付の例 1981/04/14(火)、 1991/04/09(火)、 2001/04/10(火)、 2011/04/12(火)、 2021/04/13(火)、 製造番号が「5366」となる日付の例 1985/09/06(金)、 1995/09/08(金)、 2005/09/09(金)、 2015/09/04(金)、 2025/09/05(金) 製造番号が「0011」となる日付の例 1980/01/06(日)、 1990/01/07(日)、 2000/01/02(日)、 2010/01/03(日)、 2020/01/05(日) 製造番号が「0012」となる日付の例 1980/01/07(月)、 1990/01/01(月)、 2000/01/03(月)、 2010/01/04(月)、 2020/01/06(月) 製造番号が「2125」となる日付の例 1982/03/25(木)、 1992/03/19(木)、 2002/03/21(木)、 2012/03/22(木)、 2022/03/24(木) 製造番号が「3525」となる日付の例 1983/12/29(木)、 1993/12/30(木)、 2003/12/25(木)、 2013/12/26(木)、 2023/12/28(木) 製造番号が「4083」となる日付の例 1984/02/21(火)、 1994/02/22(火)、 2004/02/24(火)、 2014/02/25(火)、 2024/02/20(火) 製造番号が「9527」となる日付の例 1989/12/30(土)、 1999/12/25(土)、 2009/12/26(土)、 2019/12/28(土)、 2029/12/29(土)
- MackyNo1
- ベストアンサー率53% (1521/2850)
No2の回答は間違えていましたので訂正します。 2010年代の日付かないという前提なら、以下のような数式になります。 =("200"&LEFT(A1)&"/1/1")+7*(MID(A1,2,2)-1-(WEEKDAY("200"&LEFT(A1)&"/1/1")=7))-WEEKDAY("200"&LEFT(A1)&"/1/1",2)+MOD(RIGHT(A1),7)
》 5366→2005年 36週 土曜日 「週」の定義を明確にしてください。 第1週および第2週というのは、 全ての年において、それぞれ 01/01~01/07 および 01/08~01/14 ですか? それとも、例えば 2005年の場合は次の何れになりますか? 第1週 第2週 (1) 01/01(土)~01/02(日) 01/03(月)~01/09(日) ←月曜始まり (2) 01/01(土) 01/02(日)~01/08(土) ←日曜始まり 日曜日の番号は 0 ですか?それとも 7 ですか?
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! データ数値は必ず4桁で最初の1桁が年と言うコトは2010年代はない!という前提です。 考え方 (1)その年の1月1日のWEEKDAY関数(日曜日を「1」とする)を利用 (2)「8」から(1)で得たWEEKDAY関数の数値を引いた日がその年の第2週目の日曜日となる。 以上のコトを利用して↓の画像のように表を作ってみました。 C列を作業用の列とします。 (E・F列は単に表示されたシリアル値の確認の意味で作っているだけです) ↓の画像の作業列C2セルを =IF(A2="","",DATE(2000+LEFT(A2,1),1,1)) としてオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてB2セルに =IF(A2="","",C2+8-WEEKDAY(C2)+7*(MID(A2,2,2)-2)+RIGHT(A2,1)) (セルの表示形式は「日付」に!) としてオートフィルで下へコピーすると 画像のような感じになります。 尚、確認列E2セルは =IF(B2="","",WEEKDAY(B2,2)) F2セルは =IF(B2="","",WEEKNUM(B2)) という数式を入れこれも下へコピー! ※ 当方使用のExcel2003以前のバージョンではWEEKNUM関数を使用するにあたり メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 以上、参考になれば良いのですが・・・m(_ _)m
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
2000/1/1(土) 2000/1/2(日) 2000/1/3(月) 2000/1/4(火) 2000/1/5(水) 2000/1/6(木) 2000/1/7(金) 2000/1/8(土) 2010/1/1(金) 2010/1/2(土) 2010/1/3(日) 2010/1/4(月) 2010/1/5(火) 2010/1/6(水) 2010/1/7(木) 2010/1/8(金) 2010/12/26(日) 2010/12/27(月) 2010/12/28(火) 2010/12/29(水) 2010/12/30(木) 2010/12/31(金) 2011/1/1(土) 2011/1/2(日) 2011/1/3(月) 2011/1/4(火) 2011/1/5(水) 2011/1/6(木) 2011/1/7(金) 2011/1/8(土) 2011/1/9(日) 2011/1/10(月) 逆に↑を変換してください。 ダブった場合はどちらの答えがほしくて、どこが境なのかも示してください
- MackyNo1
- ベストアンサー率53% (1521/2850)
たとえば、左一桁が3の場合、2003年か2013年かわからないのですが、たとえば2と1は2012年と2011年と仮定すると以下の式で日付シリアル値を取得することができます。 =("20"&IF(LEFT(A1)*1<3,1,0)&LEFT(A1)&"/1/1")+7*(MID(A1,2,2)-(WEEKDAY("20"&IF(LEFT(A1)*1<3,1,0)&LEFT(A1)&"/1/1")=7))-WEEKDAY("201"&LEFT(A1)&"/1/1",2)+MOD(RIGHT(A1),7)
- MARU4812
- ベストアンサー率43% (196/452)
=DATE(MID(A1,1,1)+2000,1,1)+(MID(A1,2,2)-1)*7+MID(A1,4,1)-WEEKDAY(DATE(MID(A1,1,1)+2000,1,1)) とか? >○○年○○月○○日という風に そこは書式設定で。