• 締切済み

元号と年から西暦年を求める関数

エクセルを利用しています。 元号と年から西暦年を求める関数がわかりません。 VBEで関数を作成したいのですが ' @summary 元号gと年yから西暦年を求める ' @param g 元号 ' @param y 年 ' @z 西暦年 ' @pre g = /^(明治|大正|昭和|平成)$/ And y >= 1 ' @post z >= 1868 Or z = -1 (エラー時) Function toSeireki(g As String, y As Integer) As Integer ○○○○ End Function ○○○○にどのように入れればいいのかわかりません なので方法を知っている方いれば教えていただきたいです

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

セルに日付シリアル値がある場合 見た目を西暦に変えるなら書式yyyy/mm/ddを設定。 文字列にするなら別セルに =TEXT(A3,"yyyy/mm/dd")。 VBAならFormat関数 ーー 昭和29年とかある場合 Sub test01() a = "昭和29年" a = "昭和29年" b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd") MsgBox b MsgBox Left(b, 4) End Sub 29は半角・全角数字でもOKでした。 ーー 平成1年1月1日は昭和でしたがOK[でした。 Sub test02() a = "平成1年" b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd") MsgBox b MsgBox Left(b, 4) End Sub ーー 平成元年はダメでした。昭和も同じ。1月1日を全角化してもダメ。 Sub test02() a = "平成元年" b = Format(DateValue(a & "1月1日"), "yyyy/mm/dd") MsgBox b MsgBox Left(b, 4) End Sub ーー Sub test04() a = "平成19年" nen = Val(Mid(a, 3, Len(a) - 3)) MsgBox nen s = Mid(a, 1, 2) Select Case s Case "平成" snen = nen + 1988 Case "昭和" snen = nen + 1925 Case "大正" snen = nen + 1911 Case "明治" snen = nen + 1867 End Select MsgBox snen End Sub を参考に関数化してください。

  • yukapapa
  • ベストアンサー率60% (60/100)
回答No.1

日付型に変換してYearを求めれば良いだけでは? Function toSeireki(g As String, y As Integer) As Integer  On Error Resume Next  toSeireki = -1  toSeireki = Year(DateValue(g & y & "/1/1")) End Function Sub Test()   MsgBox toSeireki("平成", 19) End Sub

関連するQ&A

  • 元号と西暦のうまい合わせ方を教えて下さい

    僕が歴史を勉強していて一番嫌になるのは、年代を覚えるのに元号と西暦の2種類あってややこしすぎる点です。例えば満州事変と言われればすぐに1931年と出ますが、昭和だと何年だっけ?となってしまいます。明治、大正、昭和などの元号と西暦を合わせるうまい方法はないのですか?

  • VB プログラミング

    ' @summary g円を利率r%でt年間預けたときの利息を求める ' @param g 元金 ' @param r 利率(%) ' @param t 期間 ' @z 元利合計 ' @pre g >= 0 And r >= 0.0 And t >= 0 ' @post z >= g Function risoku(g As Long, r As Double, t As Integer) As Long End Function このプログラムを完成させたいのですが完成した形を教えてください よろしくお願いします

  • 明治、大正、昭和の元号と西暦

    タイトルの通り明治、大正、昭和の時代において元号と西暦は、生活においてどの様な割合で生活に使用されていたのか?をお聞きします。 現代でこそ数年前の2000年ミレニアム?など西暦がチヤホヤされますが、明治、大正、昭和と、天皇中心であった時代に西暦の使用は今と比べてどうだったのかと思います。 大正から昭和は特に激動の時代ですので、ご存知の方は大正→昭和初期、中期、後期と区切りを付けて、庶民における元号と西暦の使用頻度などお教えください。 また、これらの時代日本におけるキリスト教の信者数はどの位だったのでしょうか?私は天皇一本だった時代、天皇=神道が中心だった様に思います。要はその時代にキリストが今見たく広く民衆に認められ、受け入れられいたのかです。 その当時を生きていた祖先を持つ方々など、口伝えでも何でも結構ですので、情報をお寄せください。

  • 元号について

    エクセルでデータベースを作っています 日付を入力する際、年を西暦にしていますが、元号がすぐにわかりずらいので、出来たら西暦年の隣りの列に元号も入力したいと思っています。 そこで、元号の列に何かの「関数」を入れるとか、西暦を入力したら自動的に隣りの列に「元号年数」が入るような方法があれば教えてください。 2010年 →平成22年、2009年→平成21年、2008年→平成20年といった感じです。 よろしくお願いします。

  • Excel2007で西暦1900年以前の関数は?

    Excel2007で西暦1900年以前の関数は? Excel自身は1901年以降に関しては日付関数で表現されています。 例えば明治40年は1907年に直ぐ置き換わります。 このように西暦と元号を置き換えることができる仕組みか関数はありませんか? 年号表はあります。従って目で見ながら置き換えるのは出来ます。 そうではなく、一方を入力すると片方が表示される仕組を探しています。

  • Excel2003で元号から西暦に変換

    E2に 平成21年4月分 というデータが入っています。 B11に日付を入力したとき、 C11に曜日を自動的に入れたいと思っていますが、 C11に私がいれた関数は、元号から西暦に変換する関数が分からず、 =IF(C11="","",TEXT(DATE(2009,MID($E$2,6,1),C11),"aaa")) と入れました。 本当はDATE関数の2009の所に、E2の平成21年を西暦に変換して入れたいのですが、関数が分かりません。 教えてください。

  • 西暦と元号の関連付けた記憶法

    ラジオやテレビ等で西暦○○○○年と報道された場合、元号(昭和、大正、明治等)では何年になるのか。昭和1桁生の世代では時代的感覚(把握)が、ピンとこない。ちなみに小生は、昭和6年(1931年)生です。 そこで、両者をうまく関連付けた、置き換え記憶法はないものでしょうか。ご教示お願いします。

  • 元号の表示

    MySQLでシステム日付をとったり日付関数で年をとったりすると西暦がベースで帰ってきますが元号で表示する方法はありますか?

    • ベストアンサー
    • PHP
  • 和暦→西暦(有効範囲を考慮)

    いつもお世話になってます。 VB2010(.NET2.0)、Winアプリ 和暦(元号)と西暦の相互変換についてです。 CultureInfo、JapaneseCalendarを使用して変換しています。 西暦→和暦の変換は問題ないんですが 和暦→西暦の変換時に有効ではない和暦を指定するとエラーとなります。 ここの「有効ではない和暦」というのは例えば「大正30年」とかです。 フォーム上にComboBoxとTextBoxが配置されており ComboBoxには「明治」「大正」「昭和」「平成」を格納、 TextBoxは数値入力のみですが2桁数値というだけで 他の制限はかけていない状態です。 各元号に有効な値を保持しといてって方法は最終手段です。 出来るだけ汎用性を持たせた形で上記エラーを回避したいと思っています。 思いついてる方法はあまりスマートではないので どなたか、こんな風にコーディングすれば出来るよって ヒントでもいいのでご意見いただけると幸いです。 よろしくお願いしますm(_ _)m

  • カスタム関数の変数をリセットしたい

    AC2000/WIN2000です。 以下のようなカスタム関数を使って、クエリーで順位を振っているんですが、 変数JUNをリセットしていないので、処理を行う毎に数字が増えていってしまいます。カスタム関数の変数をリセットするにはどうすれば良いんですか? Global MAEBUKA, REN, JUN'(順位) As Integer Option Compare Database Function G_RENBAN(BUKA As Integer) As Integer If MAEBUKA = BUKA Then G_RENBAN = JUN Else G_RENBAN = JUN + 1 JUN = JUN + 1 End If MAEBUKA = BUKA End Function

専門家に質問してみよう