• ベストアンサー

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

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

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.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列全体を選択してコピーを実行し、同じ位置で値のみまたは値と書式を貼り付ければ数式が無くなり日付のみになります。

anhana
質問者

お礼

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

その他の回答 (9)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.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

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.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 バグってないかな?

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.8

もっと簡単に B2に、 2018/1/7 と、入力、 B3に、 =B2+0.1 と、入力、 快答、諸氏中で 質問者様が、 お好みの、もので、 B3を、 必要域に、コピー、 終わり。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.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での処理が性に合わなければ、スルーして。

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.6

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

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.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 になっていることをご確認あれ

anhana
質問者

お礼

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

回答No.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 と返ります。 両者の挙動の違いを踏まえて併せて覚えておくと便利ですよ。

anhana
質問者

お礼

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

  • msMike
  • ベストアンサー率20% (364/1804)
回答No.3

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

anhana
質問者

お礼

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

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

=DATE(2018,1,7+INT((ROW(A1)-1)/10)) 此、 試して、頂けますか? B2に、入力して 必要範囲に、コピーです。 尚、 ご要望なら データ未入力行の、日付を 非表示にも、出来ます、 其の際は、どの列が キーに、なるか ご指定ください。

anhana
質問者

お礼

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

関連するQ&A