• ベストアンサー

エクセルで、数値を月として認識させるには

セルに"5"と入力したとき "May"と表示するように設定したいのですが やり方が分かりません。 "5/1"と入力すれば"May"とする事はできるのですが 5だけだと"1/5"と認識してしまい"January" の表示になります。 どなたかやり方の分かる方、教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
回答No.9

> 別セルに"May"でも構わないのです。 だったら話は簡単で、A1に数値を入力したら月名を表示したいセル を=date(2008,A1,1)として表示形式をmmmmです。 > 毎月使う表の一番上の見出しにその英語表示を出したいので > あちこちにその設定をするわけではないです。 つまり月を示す数値として使わないで、単なる見出しだけなんで しょうか。それじゃぁ、数値を入力する意味がないです。該当する 月のカレンダーを生成するとか、そういうことを意図してるんだと 思ってましたが。

rosso7474
質問者

お礼

再びの回答ありがとうございます。 返事が遅くなって申し訳ありません。 そうなんです、単純に表の上にその月を英語表示するセルが一つ ほしかったのです。 まさにカレンダー生成に使用するつもりですが、他の日にちの欄は なんとか間に合っていて、一番上の表示だけが困っていたのです。 DATEの関数使えば出来るという単純ですがそれが 思いつかなかったんで。。。 超初心者の方に作るファイルなので、入力も簡単にしたかったのです。 一番シンプルなgrumpy_the_dwarfさんのを使わせていただきます。 ありがとうございました。

その他の回答 (9)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.10

#5 と #8 の回答した者です。 後の方の書き込みで気が付きました。 回答は、読み間違えて書いてしまいました。すみませせん。 >もし、このような条件なら、マクロしかありません。 >>A1に5と入力してA1に"May"もしくは別セルに"May"でも構わないのです。 別のセルで良いのでしたら、マクロは要りませんし、#5のマクロは、別のセルに入れるようには出来ていません。あくまでも、自セルです。なお、数式側はそのままです。 #5のマクロを別にセルで使う場合は、 '--------------------------------- '変更: Private Sub Worksheet_Change(ByVal Target As Range)   Dim i As Long   Dim mDate As Date   '数値をいれるセル   If Target.Address(0, 0) = "A1" Then     If IsNumeric(Target.Value) Then       i = Target.Value       If i > 0 And i < 13 Then         mDate = DateSerial(Year(Now), i, 1)         Application.EnableEvents = False         '月名を入れるセル         Range("C1").Value = Format$(mDate, "mmmm")         Application.EnableEvents = True       End If     End If   End If End Sub

rosso7474
質問者

お礼

回答ありがとうございます。 返事が遅くなって申し訳ありません。 先にアドバイスいただきましたマクロを やってみました。 コピーと貼り付けだけで、内容は全く理解してないですが やりたかった事ができて感激でした! 今回は超初心者向けの人のファイルを作る為の物なので これは自分用のファイルの時に使わせていただきます。 ありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

#5のマクロを数式で移植すれば、意味としては、若干違いますが、以下のようになります。 =IF(ISTEXT(A1),"",IF(AND(A1>0,A1<13),TEXT(DATE(2008,A1,1),"mmmm"),""))

  • komanso
  • ベストアンサー率27% (5/18)
回答No.7

別のセルに”May”でいいのであれば、VLOOKUP関数はどうでしょうか? A1~A12にそれぞれ、「1~12」 B1~B12にそれぞれ、「January~December」 と入力します。 C1に「5」と入力したとして、 D1に下記の式を入力します。 =VLOOKUP(C1,A1:B12,2,0) すると、D1には「May」とでます。 C1=1であれば、「January」 C1=12であれば、「December」 になります。 A1:B12の範囲に適当な名前(例えば”月対応表”)をつければ、 コピペした時にも楽になります。 =VLOOKUP(C1,月対応表,2,0)

rosso7474
質問者

お礼

回答ありがとうございます。 返事が遅くなり申し訳ありません。 VLOOKUP関数を使ういう手もあるんですね。 全く発想無かったです。 よく使う関数とかが決まってるので ワンパターンな考え方しかできなくてなかなか思いつかないです。 実際はとても簡単にできたりする事も ややこしく考えてしまったりして。。。 どうもありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.6

NO4です。 左側枠にエクスプローラ画面の様なフォルダ階層が表示されていれば、そのSheet1をダブルクリックし、右側枠内に参考ソースを貼り付けて下さい。 相違していましたら、表示→プロジェクト エクスプローラで表示して下さい。

rosso7474
質問者

お礼

何度もありがとうございます。 返事が遅くなって申し訳ありません。 おっしゃってた左枠はエクスプローラの画面の事だったんですね。 最初に教えていただいたやり方で実行したらうまくいきました。 MVBの画面にあまり慣れていないので、簡単な事でとまどって しまいました。 どうもありがとうございました。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 もし、このような条件なら、マクロしかありません。 >A1に5と入力してA1に"May"もしくは別セルに"May"でも構わないのです。 貼り付け方。 マクロを実行しようとするワークシートのシートタブ(下部のSheet1,Sheet2 ...)を右クリックすると、「コードの表示(V)」というメニューがありますから、それをクリックしてください。そして、開いた画面に、以下のコードを貼り付けて、Alt + Q で閉じれば設定は完了です。 '--------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)   Dim i As Long   Dim mDate As Date   If Target.Address(0, 0) = "A1" Then     If IsNumeric(Target.Value) Then       i = Target.Value       If i > 0 And i < 13 Then         mDate = DateSerial(Year(Now), i, 1)         Target.Value = Format$(mDate, "mmmm")       End If     End If   End If End Sub

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

NO3です。 >alt+F11キーではなりませんでした ツール→マクロ→Visual Basic Editorで如何でしょうか。

rosso7474
質問者

補足

その方法でもやりました。 標準モジュールを選択すると左右に枠ができましたが それで良かったでしょうか? 左にGeneralと出てます。 これとは違いますか??

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

NO1です。 >1から12の数字を入力した場合に英語で表示 ⇒やはり、期待値と相違したみたいですね。後はマクロ(VBA)又は、日付入力(m/1)してセルの書式設定で変更ぐらいでしょうか。 因みにVBAの一例ですがお試し下さい。 (1)alt+F11キー押下 (2)左側枠の対象sheet1をダブルクリック (3)右側枠内で以下のソースを貼り付け (4)alt+F4キー押下 因みにA1:A5セル範囲のみ有効としています。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myMonth As String On Error GoTo error If Intersect(Target, Range("A1:A5")) Is Nothing Then Exit Sub Select Case Target.Value Case 1 myMonth = "January" Case 2 myMonth = "February" Case 3 myMonth = "March" Case 4 myMonth = "April" Case 5 myMonth = "May" Case 6 myMonth = "June" Case 7 myMonth = "July" Case 8 myMonth = "August" Case 9 myMonth = "September" Case 10 myMonth = "October" Case 11 myMonth = "November" Case 12 myMonth = "December" End Select Application.EnableEvents = False Target.Value = myMonth error: Application.EnableEvents = True End Sub

rosso7474
質問者

補足

ありがとうございます。 マクロは簡単なものしか作ったことないのであまり わからないのですがMVBの画面で 左枠と右枠に分かれていないのですが どうやったらその画面を出せますか? alt+F11ではなりませんでした・・・。

回答No.2

別のセルに英語の月名を表示させるんじゃダメな理由は何でしょう か。表示と入力すべき値がとっ離れていると、いつか必ず「May」と タイプしてそこらじゅうエラーだらけで悩むことになりますよ。 表示の上でどうしても数字は見せたくないのでしたら、「May」と入 力させておいて見えないところで数値にするのはどうでしょう。 =month(datevalue(A1&"-1"))あたりで可能です。入力時のスペルミ スが怖ければ、入力規則でリストに設定して選択させる手がありま すよね。私はそういう裏処理を別シート上でまとめて、非表示にし ておくことが多いです。

rosso7474
質問者

補足

回答ありがとうございます。 >別のセルに英語の月名を表示させるんじゃダメな理由 別のセルに英語表示でも構いません。 A1に5と入力してA1に"May"もしくは別セルに"May"でも 構わないのです。 >いつか必ず「May」とタイプしてそこらじゅうエラーだらけ で悩むことになりますよ 毎月使う表の一番上の見出しにその英語表示を出したいので あちこちにその設定をするわけではないです。 数字で入力をして英語の表示にしたいので =month(datevalue(A1&"-1"))だと少し主旨が変わってしまいます。 もし他に良い方法が見付からなければ入力規則にしてみようかと 思います。 ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

安直ですが、表示のみならばセルの書式設定→表示形式→ユーザ定義で[=5]"May"で如何でしょうか。(あくまでもセル内容は数値の5です)

rosso7474
質問者

補足

早速の回答ありがとうございます。 言われたやり方ですと、5の場合は"May"と表示されますが 他の数字には対応しませんよね? 質問の仕方が悪かったかもしれませんが、 1から12の数字を入力した場合に英語で表示できるように 設定したいと思っています。 どうもありがとうございました。

関連するQ&A