アプリ版:「スタンプのみでお礼する」機能のリリースについて

業務日報を作成しています。
1シート1日なので、1ヶ月30シート~31シートあります。
1ヶ月1ファイルです。
この全シートのA1に日付を入れたいのですが、毎日入力するとも
限らないので、最初から 2008年8月1日(金)のような日付を
入力したいのです。
その場合、1日分を入力したら2日以降31日まで入力になるような
方法はないでしょうか?

A 回答 (6件)

次の方法は如何でしょうか。


(1)シートは名は、1~31とします。
(2)シート2~31までを選択→A1に=DATE(YEAR(Sheet1!$A$1),MONTH(Sheet1!$A$1),MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,2))を入力
(3)シート1を選択、A1に日付を入力
因みに小の月の場合、シート31は「翌月の一日」になります。
    • good
    • 2
この回答へのお礼

早速ありがとうございます!
やってみたのですがうまくいきません。
(3)の日付を入力というのはどのような方法で入力するのでしょうか?2008/8/1と入力すると2008年8月1日のように変換されるとダメですか?

お礼日時:2008/07/28 14:55

式をコピーしたり31シートを作成したりするのも面倒なので、1シートだけ作成すればコピーまで行うマクロにしてしまいました。


(できあがるシート名を1~31としています。)

準備:下のマクロをマクロのモジュールにコピペ
    (投稿の都合上でインデントを全角ブランクにしています)
1)シートのフォーマットの雛型となるものを作成し、シート名は1(英数字の1)として、他にシートが無い状態にしておく。
2)この状態のものを雛型のブックとして保存

[ ある1ヶ月分を作成するとき ]
1)雛型のブック(上のブック)のコピーを作成
2)シート1のA1に日付を入力する(日にち形式のものならOK 例:08/8/1)
3)セットしておいた、マクロを実行。

注)マクロは原型のみなので、入力された値(日にち)のチェックや、シート名が正しいかなどのチェックは一切行っていません。
  (実際に使用するには、この辺のチェックを入れておかないと、誤操作の時にエラーが出ます)

------------------------------------------
Option Explicit
Dim s1 As Worksheet, s2 As Worksheet
Dim d_date As Date
Dim m_str As String, d_str As String, w As String
Dim d As Integer
Const L_week = "日月火水木金土"

Sub BookSet()
Set s1 = Sheets("1")
d_date = s1.Cells(1, 1).Value
m_str = Str(Format(d_date, "yyyy")) & "年" & Str(Format(d_date, "m")) & "月"
d = 1
d_str = m_str & Str(d) & "日"

While IsDate(d_str)
  If (d = 1) Then
    Set s2 = s1
  Else
    s1.Copy after:=Worksheets(Worksheets.Count)
    Set s2 = ActiveSheet
    s2.Name = Str(d)
  End If

  With s2.Cells(1, 1)
    .NumberFormatLocal = "@"
    .HorizontalAlignment = xlLeft
    .Value = d_str & "(" & Mid(L_week, Weekday(d_str), 1) & ")"
  End With
  d = d + 1
  d_str = m_str & Str(d) & "日"
Wend
s1.Activate
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!
私はマクロがわからないので・・・勉強してみます!

お礼日時:2008/07/30 14:10

NO4です。


軽率でした。
以下の訂正版をお試し下さい。
=DATE(YEAR(1!$A$1),MONTH(1!$A$1),MID(CELL("filename",$A$1),FIND("]",CELL("filename",$A$1))+1,2))として下さい。
    • good
    • 2
この回答へのお礼

今度は貼り付けてすぐに、A1に「#VALUE!」と表示され、その後シート1に日付を入力しても変化なしです。
なにか、私のやり方がマズイのかも知れません。

お礼日時:2008/07/29 16:00

NO3です。


以下の手順でお試し下さい。
(1)シート名を1~31に設定
(2)シートタグの2をクリック→shiftキーを押しながらシートタブの31をクリック(シート2~シート31が選択された状態になる)
(3)シート2のA1に関数を入力(シート2~シート31のA1に関数が入力される)
(4)シートタブ1をクリック→A1に日付を入力
    • good
    • 0
この回答へのお礼

ご親切にありがとうございます!
おっしゃる通りにしてみたのですが・・・
(3)シート2のA1・・・というところで、mu2011さんが教えてくださったものをコピーして貼り付けたのですが(これが悪いのかな?)
貼り付けると「値の更新:Sheet1」というのが出ます。
ここで何かを選択するのですか?それが出ている時はシート2のA1には「1900/1/0」と表示されています。
その「値の更新」というのをキャンセルするとA1には「#REF!」と表示されます。
よろしくお願いします!

お礼日時:2008/07/29 13:18

NO1です。


>2008/8/1と入力すると2008年8月1日のように変換されるとダメですか?
⇒内部シリアル値(200/8/1ならば表示形式を標準で39661)ならば特に問題ありません。
因みに各シートA1セルの書式設定をユーザ定義でyyyy"年"m"月"d"日"(aaa)とされると想定しています。
    • good
    • 0
この回答へのお礼

んー・・・ウマク行きません。
もう少し頑張ってみます!

お礼日時:2008/07/28 16:41

まずはじめに1日のシートのA1に日付を入力。

表示形式を調整。
次に2日のシートのA1のデータを張り付ける。そのままの状態で、「形式を選択して貼り付け」を選択し、「リンク貼り付け」を選択。そのままの状態で、F2ボタンを押して、Sheet1!$A$1のうしろに半角で+1と入力。

3日のシートのA1に2日のシートのA1を張り付ける。F2ボタンを
押して+1を+2に修正。

以降は31日まで足す数字を1つずつ増やしながら、3日のシートの
手順を繰り返す。
    • good
    • 1
この回答へのお礼

ありがとうございます!
これならウマク行きそうですが、1年分あるので作業が大変ですね。

お礼日時:2008/07/28 16:42

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

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


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