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

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

どなたかやり方の分かる方、教えて下さい。
宜しくお願いします。

教えて!goo グレード

A 回答 (10件)

> 別セルに"May"でも構わないのです。



だったら話は簡単で、A1に数値を入力したら月名を表示したいセル
を=date(2008,A1,1)として表示形式をmmmmです。

> 毎月使う表の一番上の見出しにその英語表示を出したいので
> あちこちにその設定をするわけではないです。

つまり月を示す数値として使わないで、単なる見出しだけなんで
しょうか。それじゃぁ、数値を入力する意味がないです。該当する
月のカレンダーを生成するとか、そういうことを意図してるんだと
思ってましたが。
    • good
    • 0
この回答へのお礼

再びの回答ありがとうございます。
返事が遅くなって申し訳ありません。

そうなんです、単純に表の上にその月を英語表示するセルが一つ
ほしかったのです。
まさにカレンダー生成に使用するつもりですが、他の日にちの欄は
なんとか間に合っていて、一番上の表示だけが困っていたのです。

DATEの関数使えば出来るという単純ですがそれが
思いつかなかったんで。。。
超初心者の方に作るファイルなので、入力も簡単にしたかったのです。

一番シンプルなgrumpy_the_dwarfさんのを使わせていただきます。
ありがとうございました。

お礼日時:2008/04/14 10:25

#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
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
返事が遅くなって申し訳ありません。

先にアドバイスいただきましたマクロを
やってみました。
コピーと貼り付けだけで、内容は全く理解してないですが
やりたかった事ができて感激でした!

今回は超初心者向けの人のファイルを作る為の物なので
これは自分用のファイルの時に使わせていただきます。

ありがとうございました。

お礼日時:2008/04/14 09:52

#5のマクロを数式で移植すれば、意味としては、若干違いますが、以下のようになります。



=IF(ISTEXT(A1),"",IF(AND(A1>0,A1<13),TEXT(DATE(2008,A1,1),"mmmm"),""))
    • good
    • 0

別のセルに”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)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
返事が遅くなり申し訳ありません。

VLOOKUP関数を使ういう手もあるんですね。
全く発想無かったです。
よく使う関数とかが決まってるので
ワンパターンな考え方しかできなくてなかなか思いつかないです。

実際はとても簡単にできたりする事も
ややこしく考えてしまったりして。。。

どうもありがとうございました。

お礼日時:2008/04/14 10:41

NO4です。


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

何度もありがとうございます。
返事が遅くなって申し訳ありません。

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

どうもありがとうございました。

お礼日時:2008/04/14 10:34

こんにちは。



もし、このような条件なら、マクロしかありません。
>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
    • good
    • 0

NO3です。


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

この回答への補足

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

補足日時:2008/04/11 16:50
    • good
    • 0

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

この回答への補足

ありがとうございます。

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

補足日時:2008/04/11 16:10
    • good
    • 0

別のセルに英語の月名を表示させるんじゃダメな理由は何でしょう


か。表示と入力すべき値がとっ離れていると、いつか必ず「May」と
タイプしてそこらじゅうエラーだらけで悩むことになりますよ。

表示の上でどうしても数字は見せたくないのでしたら、「May」と入
力させておいて見えないところで数値にするのはどうでしょう。
=month(datevalue(A1&"-1"))あたりで可能です。入力時のスペルミ
スが怖ければ、入力規則でリストに設定して選択させる手がありま
すよね。私はそういう裏処理を別シート上でまとめて、非表示にし
ておくことが多いです。

この回答への補足

回答ありがとうございます。

>別のセルに英語の月名を表示させるんじゃダメな理由
別のセルに英語表示でも構いません。
A1に5と入力してA1に"May"もしくは別セルに"May"でも
構わないのです。

>いつか必ず「May」とタイプしてそこらじゅうエラーだらけ
で悩むことになりますよ
毎月使う表の一番上の見出しにその英語表示を出したいので
あちこちにその設定をするわけではないです。

数字で入力をして英語の表示にしたいので
=month(datevalue(A1&"-1"))だと少し主旨が変わってしまいます。

もし他に良い方法が見付からなければ入力規則にしてみようかと
思います。

ありがとうございました。

補足日時:2008/04/11 15:33
    • good
    • 0

安直ですが、表示のみならばセルの書式設定→表示形式→ユーザ定義で[=5]"May"で如何でしょうか。

(あくまでもセル内容は数値の5です)

この回答への補足

早速の回答ありがとうございます。

言われたやり方ですと、5の場合は"May"と表示されますが
他の数字には対応しませんよね?

質問の仕方が悪かったかもしれませんが、
1から12の数字を入力した場合に英語で表示できるように
設定したいと思っています。

どうもありがとうございました。

補足日時:2008/04/11 12:01
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング