• ベストアンサー

連続データの入力

お世話になります。 エクセルで、たとえばセルA1に1、B1に10000と入力があるとして、 別のセルに、1.2.3.4.5.......10000と行方向へ入力したいです。 要するに、セルA1の入力値からB1の入力値までの、 連続する数値を入力します。 実際には、上記のような例が200行程度あり、 各行の開始値にも終了値にも、規則性はありません。 (1行目が1~10000、2行目が10505~11223等。桁は7桁まで) 結果の連続データは、1列に収まる必要はありません。 オートフィルで入力したり、先にMAX行まで連続データを入力後 不要な分を削除するようなやり方では、件数が多すぎて大変です。。 イメージとしては、マクロで動かせば・・・とは思いますが、 知識が乏しく、解決できませんでした。 お知恵を拝借できれば、幸いです。 よろしくお願いします。

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

  • ベストアンサー
回答No.5

質問内容が曖昧な所があるので、結果としてどうなればいいのかが不明確なままの回答です。 A1:1 B1:100 A2:120 B2:150 A3:200 B3:210 ・・・以下必要な分だけ入力 みたいに入力しておきます。 ※サンプルなので数字は小さくしておきます そして以下を標準モジュールに貼り付けて実行します。 そうすると、C列以降に指定した数から数まで貼りつきます。 もう少し違う結果が欲しいのであれば、どれをどうしたいのか教えて下さい。 あと、行と列を混同して表現されていると思われる部分もあります。 あまり難しい事をしないでもできそうですが、 結果としてどうしたいのかが不明瞭なので、違っていたらすみません。 Sub Sample() Dim I As Integer Dim A As Long, B As Long Range(Range("C1"), Range("C1").SpecialCells(xlLastCell)).ClearContents For I = 1 To Range("A65536").End(xlUp).Row A = Cells(I, 1).Value B = Cells(I, 2).Value With Range(Cells(1, I + 2), Cells(B - A + 1, I + 2)) .Formula = "= row() + " & (A - 1) .Value = .Value End With Next I End Sub

f-kafka
質問者

お礼

abe_oneselさん お世話になります。 早速コピペして試させていただきました。 結果をご報告すると、思っていた通りで完璧な結果を得ました! 各開始値ごとに、列を分けてデータ入力できるところは、 そうなればいいな、と、勝手に想像してたところまでできました。 大変感謝です。 他の方にも指摘されてるように、質問文が曖昧で申し訳ありません。 にもかかわらずベストな回答を得られました事、 本当にありがとうございました。 質問文については、以後注意して記載します。 ご回答ありがとうございました。

その他の回答 (8)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.9

> このコードでやれた事を、更に自動で複数行に入力してある > 開始値と終了値についてのデータも入力したかったところです。 具体的に他の初期値と終了値がどこに入っているのかが不明でしたし データをどこから書き始めるのかも不明でしたから A1B1でC1から書き始める例をしましましたが あとはご自身で改良できれば改良してくださいね。

f-kafka
質問者

お礼

kmetuさん お世話になります。 質問内容については、大変反省をしております。 自分の思い込みで、伝わるものと勘違いしていては、 思うような回答が得られないのは当然ですね。。 今後質問させていただく際には、十分注意するようにします。 kmetuさんをはじめ、他の方にも教えていただいたコードは、 自分で勉強する際の参考にさせていただこうと思います。 この度はありがとうございました。

回答No.8

>別のセルに、1.2.3.4.5.......10000と行方向へ入力したいです。 別のセルってどこ? こういうあいまいな書き方は、回答者によって解釈が異なるのでよくないです。 私は、C1から下へ書き込んでいき、最終行までいったら隣の列へ移ってD1から下へと書き込んで・・・の繰り返しと解釈しました。 Sub mcr() Dim r_rowno As Integer, w_rowno As Integer, w_colno As Integer, num As Integer '初期化 r_rowno = 1 '読み込み開始行 w_rowno = 1 '書き込み開始行 w_colno = 3 '書き込み開始列 Do While Cells(r_rowno, 1) > 0 And Cells(r_rowno, 2) >= Cells(r_rowno, 1) For num = Cells(r_rowno, 1) To Cells(r_rowno, 2) Cells(w_rowno, w_colno).Value = num '書き込み If w_rowno = ActiveSheet.Rows.Count Then '最終行までいったら次の列の先頭行へ w_rowno = 1 w_colno = w_colno + 1 Else w_rowno = w_rowno + 1 '次の書き込み行へ End If Next r_rowno = r_rowno + 1 '次の読み込み行へ Loop End Sub

f-kafka
質問者

お礼

cistronezkさん お世話になります。 早速コピペして試させていただきました。 結果をご報告すると、バッチリ完璧に対応できました! ご指摘どおり、不明確な質問内容にもかかわらず、 希望通りのコードをご教授いただき、大変感謝です。 また、コード中にコメントもいただき、 内容を理解する一助になり、参考になります。 今後質問する際は、質問文には十分注意します。 ご回答ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

こういうことか? 例データ A列 B列 1 12 <ー1から12までの連続データの意味 2 5 5 6 2 4 ーー コード 編集ーフィルー連続データの作成でマクロの記録 を一部改変 Sub Macro2() d = Range("a65536").End(xlUp).Row MsgBox d For i = 1 To d Cells(i, "C") = Cells(i, "A") Cells(i, "C").Select 'Selection.DataSeries Rowcol:=xlRows, Type:=xlAutoFill, Date:=xlDay, _ ' Trend:=False Selection.DataSeries Rowcol:=xlRows, Type:=xlLinear, Date:=xlDay, Step _ :=1, Stop:=Cells(i, "B"), Trend:=False Next i End Sub 結果 A列、B列は元データ。C列から連続データ A列=スタート数字、B列=終わりの数字 A列 B列 C列以右 連続データ 1 12 1 2 3 4 5 6・・・12 2 5 2 3 4 5 5 6 5 6 2 4 2 3 4

f-kafka
質問者

お礼

imogasiさん お世話になります。 早速コピペして、試してみました。 結果をご報告すると、ほぼやりたい事ができました! 使用しているエクセルが2003のため、256列までしか入力できず、 このコードを縦(行)方向へ入力していくように変更すれば、 完璧にできそうです。 エクセルのバージョンや、入力セル等、 他の方に指摘されているように、質問文が不明確なため、 ご迷惑をおかけしました。 ご回答いただき、ありがとうございます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.6

No4です 先の回答で訂正 If m_Column = 256 Then ↓ If m_Column = Columns.Count Then 横に並ぶのかなと思って先の回答をしましたが縦に並ぶのでしたら C1から入力するとして Sub test1() Dim i, m_Row, m_Column m_Row = 1 m_Column = 3 For i = Range("A1").Value To Range("B1").Value Cells(m_Row, m_Column).Value = i If m_Row = Rows.Count Then m_Row = 1 m_Column = m_Column + 1 Else m_Row = m_Row + 1 End If Next End Sub

f-kafka
質問者

お礼

kmetuさん お世話になります。 早速コピペして試させていただきました。 結果として、ほぼやりたい事ができました! このコードでやれた事を、更に自動で複数行に入力してある 開始値と終了値についてのデータも入力したかったところです。 教えていただいたコードを、更に繰り返すような記述に 変更すれば、やりたい事ができるのですね。 質問文の不明確さで、ご迷惑をおかけしました。 ご回答いただき、ありがとうございました。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

どこのセルに入力したいのか不明ですが とりあえずA2から入力するとして Sub test() Dim i, m_Row, m_Column m_Row = 2 m_Column = 1 For i = Range("A1").Value To Range("B1").Value Cells(m_Row, m_Column).Value = i If m_Column = 256 Then m_Column = 1 m_Row = m_Row + 1 Else m_Column = m_Column + 1 End If Next End Sub

f-kafka
質問者

お礼

回答No.6へ記載させていただきました。

  • camputer
  • ベストアンサー率64% (22/34)
回答No.3

 こんばんは.横幅が256以上ある,ということはExcel2007ということでしょうか.  もしマクロご希望でしたら, エクセルファイル起動状態で「Alt+F11」を押す →出てきた画面の「ThisWorkbook」ダブルクリック(緑のアイコン) →右半分の白いところに下のコードを全部コピペ Sub 数字自動入力() iStart = ActiveSheet.Cells(1, 1) iStop = ActiveSheet.Cells(1, 2) For ii = iStart To iStop iCycle = iCycle + 1 Cells(5, iCycle) = ii Next Range(Cells(5, iCycle + 1), Cells(5, 16384)) = "" End Sub →上のバーの再生ボタン(緑の三角形)を押す とやってみてください. 今回はセル「A5」から数字が並ぶようにしてみましたけど, もしこれが役に立ちそうでしたらまた言ってください.  頑張れ~ ^^b

f-kafka
質問者

お礼

camputerさん お世話になります。 早速コピペして試してみました。 結果をご報告すると、使用しているエクセルは2003だったので、 列MAXの256までの入力になりました。 やりたかった事は、これが縦(行方向)へ入力されていき、 6万何千だかのMAX行に達した場合は、次の列へ引き継ぐような形でした。 教えていただいたコードを、縦方向へ入力するように変えれば、 やりたかった事ができそうですね。 質問内容が曖昧になってしまっていたせいです。 せっかく教えていただいたのに、申し訳ありませんでした。 ご回答、ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です! たびたびごめんなさい。 投稿した後で質問をよく読んでみると >(1行目が1~10000、2行目が10505~11223等。桁は7桁まで) 結果の連続データは、1列に収まる必要はありません。 とありますので、前回の回答では希望に添えないと思います。 当方使用のExcel2003では最終行が65536行目になりますので 最終値にいくら大きな値を入力してもそれ以上は表示されませんし、 次の行へ飛ぶこともできません。 ということで、前回の回答は無視してください。 何度も失礼しました。m(__)m

f-kafka
質問者

お礼

tom04さん お世話になります。 フィルの設定?でそのような機能がある事は知りませんでした。 今回はおっしゃるとおり、データの件数が多く、 その機能では時間がかかってしまいそうですが、 別でもっと少ないデータであれば、大変有効な手段だと思いました。 ご回答、ありがとうございました。 こちらの質問文が曖昧で、2度もお手間を取らせてすみません。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! VBAでも関数でもないので 的外れなら読み流してください。 ↓の画像でA1セルに「1」と入力します。 メニュー → 編集 → フィル → 連続データの作成 と進むと 連続データダイアログボックスが出ますので、 範囲は「列」 種類は「加算」 増加値は「1」 停止値は「10000」 としてOKこれでA列は完了です。 同様の操作をB列以降も行えば希望に近い形にならないでしょうか? 以上、当方使用のExcel2003での回答でしたが、 1行ずつ手作業になるので希望とは違うかもしれませんね。 他に良い方法があれば無視してくださいね。m(__)m

f-kafka
質問者

お礼

回答No.2へ記載させていただきました。

関連するQ&A