こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

エクセルで日付を10行づつ連続でいれたい

エクセル2010を利用しております。
約97000行までのデーターがあります。
あとえばB2に日付(2018/02/07)をいれます。
B2からB11までは2018/02/07
B12からB21までは2018/02/08
B22からB31までは2018/02/09・・・
と10行づつで最下部まで簡単に日付を入力したいのですがよい方法はありますでしょうか?
よろしくお願い致します。

投稿日時 - 2018-02-07 05:28:12

QNo.9426419

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(10)

ANo.10

誤植がありました。
お詫びの上、訂正します。
済みません。

誤記、
const 分解能 = 1 / 10
SUB 日付セット(ByVal 開始日 As DATE. ByRef らんげ As range) As void
   らんげ.Cells(1,1)value = 開始日
   らんげ.Range(Cells(1.2),Cells(1.らんげ.RoseCount)).formula _
     = らんげ.Cells(1,1)value + 分解能
End Sub

Sub Main()
  Call(2017/2/7,B2:B97000)
End Sub

正記、
const 分解能 = 1 / 10
SUB 日付セット(ByVal 開始日 As DATE, ByRef らんげ As Range) As void
   らんげ.Cells(1,1).value = 開始日
   らんげ.Range(Cells(1.2),Cells(1.らんげ.RoseCount)).formula _
     = らんげ.Cells(1,1).value + 分解能
End Sub

Sub Main()
  Call(2017/2/7,B2:B97000)
End Sub

投稿日時 - 2018-02-07 12:31:43

ANo.9

VBAだと、未確認ながら

const 分解能 = 1 / 10
SUB 日付セット(ByVal 開始日 As DATE. ByRef らんげ As range) As void
   らんげ.Cells(1,1)value = 開始日
   らんげ.Range(Cells(1.2),Cells(1.らんげ.RoseCount)).formula _
     = らんげ.Cells(1,1)value + 分解能
End Sub

Sub Main()
  Call(2017/2/7,B2:B97000)
End Sub

バグってないかな?

投稿日時 - 2018-02-07 12:21:42

ANo.8

もっと簡単に
B2に、
2018/1/7
と、入力、

B3に、
=B2+0.1
と、入力、

快答、諸氏中で
質問者様が、
お好みの、もので、

B3を、
必要域に、コピー、

終わり。

投稿日時 - 2018-02-07 11:34:11

ANo.7

vbaでやるなら、考え方は単純になる。
VBAのごく初歩的なコードで済む。
ーーー
VBE画面の標準モジュールに
Sub test01()
Application.ScreenUpdating = False '処理中は一旦セルの変化の画面の変化を抑える
dt = DateValue("2018/2/7") '最初の日セット
'A列などに、最終行までデータがすでに入っている場合
lr = Range("A150000").End(xlUp).Row 'A列最終行を取得
'A150000の列番号Aは適宜変えること
'A列など最終行までデータがすでに入っていない場合、目視とか目的で最終行数を捉え、その行番号数字を'下記lr+2の部分に置き換える
For i = 2 To lr + 2 '第2行目から
If (i - 2) Mod 10 = 0 Then '10行とに
dt = dt + 1 '1日増やす
Else
End If
Cells(i, "B") = dt 'B列セルに日付セット
Next i
Application.ScreenUpdating = True '画面変化を実現
End Sub
ーー
VBAでの処理が性に合わなければ、スルーして。

投稿日時 - 2018-02-07 11:26:59

ANo.6

老婆心ながら、[名前ボックス]をご存じない方のために、添付図参照

投稿日時 - 2018-02-07 11:15:35

ANo.5

範囲 B2:B3 を選択 ⇒ yyyy/mm/dd に書式設定 ⇒ セル B3 に下記の式を
入力 ⇒ セル B3 を選択 ⇒ 名前ボックス内に表示されている B3 を
B3:B97000 に書き替え ⇒ Ctrl+Shift+Enter ⇒ Ctrl+V ⇒ セル B2 を選択
⇒ Ctrl+; をパシーッと叩き付け
=IF(B$2="","",B$2+INT((ROW(A2)-1)/10))

セル B97000 の日付が 2044/08/28 になっていることをご確認あれ

投稿日時 - 2018-02-07 10:52:11

お礼

ご返答ありがとうございます。
Nouble様、bunjii様、tsubu-yuki様とは違った別解でこちらでも無事最終行まで日付の変更ができました。
ありがとうございます。
エクセルの奥深さが身み染みました。
本当にありがとう御座いました。

投稿日時 - 2018-02-07 11:16:30

ANo.4

似ている考え方ですが、別解。

> B2に日付(2018/02/07)をいれます。
とのことで、
  B3セル:=$B$2+TRUNC((ROW()-2)/10)
として、必要分フィル(あるいはコピー貼り付け)で完了です。
初めにB3:B97000を範囲指定しておいて上記式を入力、
Ctrl+Enterで確定してやれば全セルに同じ式が入ります。


誤解させるような記述の解説書も未だにチラホラあるようですが
INT関数は「もっとも近い、小さい整数にする」関数です。
TRUNC関数は「0に近い整数にする」関数です。
負の数を扱うときの違いが明確で、例えば
  INT(-5.4) ⇒ -6
  TRUNC(-5.4) ⇒ -5
と返ります。
両者の挙動の違いを踏まえて併せて覚えておくと便利ですよ。

投稿日時 - 2018-02-07 08:31:21

お礼

ご回答ありがとうございます。
ご返答頂きました数式を試してみました。
しっかりと最下部まで日付が変更されました。
Nouble様、bunjii様とは違った数式で大変勉強になりました。
ありがとうございます。

投稿日時 - 2018-02-07 11:13:39

ANo.3

》 約97000行までのデーターがあります
何処(どの列)の何行目から?途中に空白セルなしにビッシリと?

投稿日時 - 2018-02-07 08:05:34

お礼

ご連絡ありがとうございます。
B2から空白セルなしでびっしりです。
多くの方々から回答を頂き希望の処理を済ますことができました。
ありがとうございます。

投稿日時 - 2018-02-07 11:09:54

ANo.2

>あとえばB2に日付(2018/02/07)をいれます。
>B2からB11までは2018/02/07
>B12からB21までは2018/02/08
>B22からB31までは2018/02/09・・・
>と10行づつで最下部まで簡単に日付を入力したいのですが
B2セルへ次の数式を設定して下へ必要数コピーします。
="2018/2/7"+INT((ROW()-2)/10)
97000行に対してオートフィルコピーはやってられませんよね?
名前ボックスにB3:B96999と入力してEnterキーを打鍵するとB3:B96999が選択状態になります。この状態でセルの書式から行の非表示を実行するとB2の下がB97000になりますのでオートフィルコピーを実行すれば簡単にB97000までコピーされます。その後、B2:B97000を選択した状態で行の再表示をすれば目的通りの日付になります。
数式のままでは不都合であればB列全体を選択してコピーを実行し、同じ位置で値のみまたは値と書式を貼り付ければ数式が無くなり日付のみになります。

投稿日時 - 2018-02-07 07:54:56

お礼

ご返答ありがとうございます。
ご教授頂きました数式を試してみました。
見事に最下部まで日付が反映されました。
Nouble様とは別解の式ですが、大変勉強になりました。
ありがとうございました。

投稿日時 - 2018-02-07 11:08:02

ANo.1

=DATE(2018,1,7+INT((ROW(A1)-1)/10))
此、
試して、頂けますか?

B2に、入力して
必要範囲に、コピーです。


尚、
ご要望なら
データ未入力行の、日付を
非表示にも、出来ます、

其の際は、どの列が
キーに、なるか
ご指定ください。

投稿日時 - 2018-02-07 06:11:10

お礼

ご返答ありがとうございます。
おしらせ頂きました数式で最下部まで日付の変更ができました。
ありがとうございます。

投稿日時 - 2018-02-07 11:05:25