こんにちは。
数式で処理するのか、数式の処理なら、入力セルと出力セルとを別けていれるとか、それとも、書式で処理するのか、または、マクロで処理するのとか、
数式:
=TEXT(A1,"yyyy/mm")&"/21"
書式では、日付シリアル値としては認識されませんが、
書式:
書式のユーザー定義で、
yyyy/mm"/21"
とすればよいでしょう。
>いちいち入力するのが面倒ですので、「2014/02」と入力しただけで、自動的に「2014/02/21」を返す
個人的には、「2014/02」の入力と、「2014/02/21」との差はほとんどないような気がするので、本来は、マクロで処理するなら、特定のセルに、「2」だけ入れてたら、それが、2014/02/21になるとか、もう少し条件を加えてもよいとは思います。
マクロで、20足すというのは芸がないので、こんな方法を考えました。
つまり、以下の場合は、あくまでも、2014/2 もしくは、2014/02と入れないと、日付と認識しないようにしました。言い換えれば、2014/15 なら、そのままになるということです。
以下は、ブックのいろいろなシートで使うなら、ThisWorkbook に登録
もしも、シートは特定のものなら、シート側のローカルペインで、
Private Sub Workbook_SheetChange....を、Private Sub Worksheet_Change(ByVal Target As Range)へ入れ替えてください。
'//
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim myDate As Variant
If Target.Address(0, 0) <> "A1" Then Exit Sub 'セルはA1のみとする
Application.EnableEvents = False
With Target
myDate = Format(.Value2, "yyyy/mm")
If IsDate(myDate) Then
.ClearFormats
.NumberFormat = "yyyy/mm/dd"
.Value = myDate & "/" & "21"
End If
End With
Application.EnableEvents = True
End Sub
'//
お礼
早速のご教示ありがとうございます。 そうか!書式設定でそうすればよかったんだ! 眼からうろこの発想です。 ありがとうございました。