• ベストアンサー

Excel 関数

和暦を西暦にしたいです。 28/12/7→2016/12/7 10/12/26→1998/12/26 27/9→2015/9 5/6→1993/6 =(LEFT(G12,2)+1988)&MID(G12,3,LEN(G12-3)) この式だと5/6が1993/6とならず#VALUE!と出ます。 なぜですか。どうしたら1993/6になりますか。

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

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

>なぜですか。 前回の質問では年数を2桁のみの提示で、「1桁もあり得る」と言う条件を明示していませんでしたか? 数式をなるべく簡素化するためには提示されていない条件を無視することもあります。 質問の仕方に注意すればこのようなことが起りません。 >どうしたら1993/6になりますか。 =(LEFT(G12,FIND("/",G12)-1)+1988)&MID(G12,FIND("/",G12),LEN(G12)) 尚、和暦では明治、大正、昭和、平成と言う元号を付さないと正しい値を求められません。 質問の和暦の元号は平成としてありますが他の元号のときは加算する定数を変更する必要があります。

meronsodanomu
質問者

お礼

ありがとうございます。

関連するQ&A

  • このエクセルの複雑な関数を訳してください!

    こんにちは。 これから年賀状の季節ということで、エクセルでリストを作成し、印刷にまでこぎつけたいと思うのですが、「(株)や(有)を除いた会社名順に並び替えたい」と考えております。 そこで、こちらのOkwebで検索したところ、下記のような式がアドバイスされていました。とてもありがたいです。 ただ、こちらをそのまま使わせていただいてもかまわないのですが、式に興味を持ち、自分で辞書をひいて調べたところ、構造が理解できませんでした。 そこで、どなたかこちらのエクセルの式を訳していただけないでしょうか。 =CONCATENATE(LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1),MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1,LEN(PHONETIC(A2)))) CONCATENATE関数で、LEFT関数・MID関数・LEN関数で出したものを結合する? ・LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1) ・MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1 ・LEN(PHONETIC(A2) このようにわけられるものでしょうか。 アドバイス、よろしくお願いします!

  • 難易度の高いエクセル関数について

    =SUMPRODUCT(VALUE(SUBSTITUTE(LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),""))) というエクセル関数の意味の解明に努めています。 SUMPRODUCT(VALUE(SUBSTITUTEまではわかるのですが、 LEFT(E3:E13,LEN(E3:E13)-1),CHAR(160),"")の部分がわかりません。 具体的には2つわかりません。 (1)googleで検索しても、LEFT関数の例を挙げますと、引数は2つまでですが、上記の例では4つ出ているところがわかりません。なぜ4つが可能なのでしょうか? (2)また、もう一つわからない点は同じくLEFT関数最後の引数の""です。何を意味しているのか、google検索では全くわかりませんでした。 どなたかお分かりの方、ご教授いただけますと幸いです。どうぞよろしくお願い致します。

  • Excelの関数を教えてください

    Excelで、あるセルに2011/12/21というように西暦、月、日と入力し、違うシートのセルに一つずつに23 12 21というように、和暦、月、日と表示させたいのですが何か良い関数及び表示形式はないでしょうか? 教えてください。

  • エクセルの関数について

    いつもお世話になっております。 エクセルの関数についてお尋ねします。 (例) A1に 12/09/2013 16:00:06 という文字列があり、これをB1でシリアル値に変更しようと考えています。 MID(A1,7,4)&"/"&LEFT(A1,5)&MID(A1,11,9) ⇒ 2013/12/09 16:00:06(文字列) (MID(A1,7,4)&"/"&LEFT(A1,5)&MID(A1,11,9))*1 ⇒41612.7086111111 と*1する事によってシリアル値に変換されてるわけですが、この『×1』はどのような意味なのでしょうか? 知らないで使っているのが気持ち悪いのでどなたかよろしくお願いいたします。

  • 計算式の簡素化

    よろしくお願いします。 下の構文を簡単に記述する方法をお教え願えないでしょうか。 Range("F5").Value = "=IF(LEN(V5)=4,MID(V5,1,1),IF(LEN(V5)=5,MID(V5,1,2),IF(LEN(V5)=6,MID(V5,1,3),IF(LEN(V5)=7,MID(V5,1,4),IF(LEN(V5)=8,MID(V5,1,5),"""")))))" Range("F7").Value = "=IF(LEN(V7)=4,MID(V7,1,1),IF(LEN(V7)=5,MID(V7,1,2),IF(LEN(V7)=6,MID(V7,1,3),IF(LEN(V7)=7,MID(V7,1,4),IF(LEN(V7)=8,MID(V7,1,5),"""")))))" ~省略~ Range("F31").Value = "=IF(LEN(V31)=4,MID(V31,1,1),IF(LEN(V31)=5,MID(V31,1,2),IF(LEN(V31)=6,MID(V31,1,3),IF(LEN(V31)=7,MID(V31,1,4),IF(LEN(V31)=8,MID(V31,1,5),"""")))))" Range("F33").Value = "=IF(LEN(V33)=4,MID(V33,1,1),IF(LEN(V33)=5,MID(V33,1,2),IF(LEN(V33)=6,MID(V33,1,3),IF(LEN(V33)=7,MID(V33,1,4),IF(LEN(V33)=8,MID(V33,1,5),"""")))))"

  • Excel 日付変換をマクロで

    8月1日(土)=DATE(2015,VALUE(LEFT(C23,1)),VALUE(MID(C23,3,1))) 8月10日(土)=DATE(2015,VALUE(LEFT(C24,1)),VALUE(MID(C24,3,2))) 10月1日(火)=DATE(2015,VALUE(LEFT(C25,2)),VALUE(MID(C25,4,1))) 10月11日(火)=DATE(2015,VALUE(LEFT(C26,2)),VALUE(MID(C26,4,2))) いつもは右の関数で 2015/8/1 2015/8/10 2015/10/1 2015/10/11に変換しています。 マクロの方が簡単かは別としてマクロを組みたいです。 日付が入力されてるセルが毎回違うので、 変換したい所を選択してからマクロ実行をしたいです。

  • エクセルのTEXT関数の使い方

    例えば、"19880701"というような数値を"1988/07/01"というような日付形式に変換したいのですが、そのためにTEXT関数をあえて使用するとすれば、どのような書き方になるのでしょうか?一応「=TEXT(D2,"yyyy/mm/dd")」と書いたのですが、"#VALUE!"というエラーが出てしまいます。どうすればよいでしょうか?ちなみにLEFT関数やMID関数は使わないとします。

  • エクセルについて教えてください<(_ _)>

    エクセルの式に数時間悩んでます・・。 外はすでに明るくなっていて、時間がなくなってきたのでみなさまに力を貸して頂きたく質問させてもらいます<(_ _)> 6時間掛かっても出来ませんでした(T_T) エクセルの、セル内の一部を取り出したいのです。 A1のセルに「あいうえお[マル]1-2[××会社]」と言うデータが入っていて、[××会社]の部分だけ取り出ししたいのです。 ただ、会社名は、5社だけです。 なお、データーによって、文字数はバラバラです。 会社名も、文字数バラバラです。 私が考えていたのは、MID(A1,FIND("[××",A1),LEN(A1))です。 この式ですと、××会社は出力出来ました。 同じ方法で、◯◯◯会社も出来ました。 MID(A2,FIND("[××",A2),LEN(A2)) なので、他も同じように式を作り、ORなどで1つの式にするのは難しいでしょうか? 会社別では、なくランダムにデーターが並んでいて、量が多い為1つの式でそれぞれ出力できたらとっても助かります・・。 自分の力では出来ませんでした・・(>_<) 式を入力するたび、”#VALUE”が並んでいて泣きそうです・・。 (ORとかIFとか使ってみたのですが・・・) よろしくお願いします。<(_ _)>

  • エクセルで数値を分割してセルに表示する関数

    エクセルで納品書フォームを作成したく、検索していたところ、ぴったりの質問をされていたのを見つけました。 http://okwave.jp/qa/q2454896.html このNO,1の方の回答で今自分のやりたいセルにあてはめて入力してみたのですが、うまくできません。 お恥ずかしながら、関数の構成を理解できていないので、どこが間違っているのかすらもわかりません。 具体的には、AG8に入力してある8桁の数字をAH8からAO8にひとつづつ表示していのです。 その場合、AH8には、=IF(ISERROR(VALUE(MID($AG8,LEN($AG8)-(9-COLUMN(AH8)),1))),"",VALUE(MID($AG8,LEN($AG8)-(9-COLUMN(AH8)),1))) で宜しいのでしょうか? AH8には何も表示されません。 すみませんが、よろしくお願いします。

  • エクセルで経過年を表示したい。

    エクセル2000。経過年を表示したい。=DATEDIF(DAYEVALUE(L27),NOW(),"Y")で出ません。出るシートもあったのですが、リターンキーを押すとで=VALUE!になってしまいます。希望は和暦入力ですが、西暦でもかまいません。ちなみに西暦でもだめでした。

専門家に質問してみよう