• ベストアンサー

エクセルマクロで

お世話になります。 エクセルにて、選択した列のセルに年・月・通し番号(201107001) と入力するにはどういうマクロになるでしょうか? また次の行では201107002となります。 よろしくお願いします。

  • OKBob
  • お礼率94% (97/103)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

連番を記入したいセル範囲を選んで実行する。 sub macro1()  with selection  .cells(1) = format(date, "yyyymm") * 1000 + 1  .dataseries type:=xllinear, step:=1  .numberformat = "0"  end with end sub

OKBob
質問者

補足

素早い回答ありがとうございます。助かります。 可能であれば範囲選択でなく、その都度でお願いしたいです。 もちろん列の変更はなく、下へ続いています。 左側セルの入力を終える度に入れたいのです。 気が向きましたらお願いします。 初級者なものでお手数お掛けします。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

ご質問は >選択した列のセルに年・月・通し番号(201107001)と入力する です。思いつきで全然違うことを「ついでに聞いちゃで」で追加しないでください。 そもそもいったい「どこのセルからどこのセルまで」に連番を記入したいのかとか,元のご相談も追加ご質問もさっぱり不明のまんまです。 たとえばやりたかったのは「選択列に連番を入れたい」なのに,「左側セルの入力」とかしてたら選択してたセルなんて全然どっかに行っちゃいますよ。 また思いつき追加なモノだから,いったいどういう状況での利用を考えているのかもますます曖昧です。 何もない所に1番から連番を入れ始めたい(当初ご質問)のと,既にある連番の続き番号を記入したい(追加質問)では,やることもマクロもまるで違います。 具体的なヤリタイ事を整理して,新しいご相談としてキチンと投稿し直して下さい。

OKBob
質問者

お礼

だいぶ時間が経ってしまいましたが、大変申し訳ありませんでした。 あの後、お二人の回答を基に(まだまだ未熟ですが)完成させました。 昼過ぎまでに完成させたかったのでお力をお借りしたのですが 半端な事をしてしまい大変申し訳なく思っています。 本来の要求は"入力した値の右に日付入り通し番号"だったのですが 下記のままでは月の初日に必ずfirst1の実行が必要な未完成です。 手が回らずこのままで使っているのですが、またの機会にもお力を お貸し戴ければと思います。ありがとうございました。 Sub first1() Range("H300").End(Direction:=xlUp).Select ActiveCell.Offset(1, 0).Select With Selection .Cells(1) = Format(Date, "yyyymm") * 10000 + 1 End With End Sub Sub second2() Range("H300").End(Direction:=xlUp).Select NUM = Selection.Value NUM = NUM + 1 Selection.Offset(1).Select Selection.Value = NUM End Sub

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.2

こんなの? SUB TOOSHIBANGOU() NUM = Selection.value NUM = NUM + 1 Selection.offset(1).select Selection.Value = NUM END SUB 最後に番号を入れたセルにカーソルを合わせて実行すると、次のセルを選択してからそこに+1した数値が入る。

OKBob
質問者

お礼

だいぶ時間が経ってしまいましたが、大変申し訳ありませんでした。 あの後、お二人の回答を基に(まだまだ未熟ですが)完成させました。 昼過ぎまでに完成させたかったのでお力をお借りしたのですが 半端な事をしてしまい大変申し訳なく思っています。 本来の要求は"入力した値の右に日付入り通し番号"だったのですが 下記のままでは月の初日に必ずfirst1の実行が必要な未完成です。 手が回らずこのままで使っているのですが、またの機会にもお力を お貸し戴ければと思います。ありがとうございました。 Sub first1() Range("H300").End(Direction:=xlUp).Select ActiveCell.Offset(1, 0).Select With Selection .Cells(1) = Format(Date, "yyyymm") * 10000 + 1 End With End Sub Sub second2() Range("H300").End(Direction:=xlUp).Select NUM = Selection.Value NUM = NUM + 1 Selection.Offset(1).Select Selection.Value = NUM End Sub

関連するQ&A

  • エクセルのマクロ作成で困っています。任意の列(〇列1行目)から0001

    エクセルのマクロ作成で困っています。任意の列(〇列1行目)から0001-安部 0002-安藤 0003-木下・・と入力された列があります(番号は3桁あるいは4桁です)。そして、例えば最後の入力されたセルの行番号が56だとして、そこに入力されたものが「0056-名前」であるか確認するマクロを作りたいのですが、どのように記述すればよいでしょか?確認したいのは番号(この場合'0056')のみで良いのですが・・。

  • エクセルのショートカットORマクロ

    お世話になります。 XP/エクセル2003使用です。 早速ですが、質問させていただきます。 エクセルのショートカットで、 同じ値の最後のセルまでセル範囲を選択するショートカットを探しています。 -------- 同じ値の1個目のデータが複数行に渡ってあります。 そして、1個目のデータに続いて、1個目とは異なる値の2個目のデータが複数行に渡ってあります。 3個目以下同じ繰り返しです。 例えば、A列の 1~800行目  あああ 801~1100行目  いいい 1101行目~1205行目 ううう 1206行目~1310行目 えええ 1310行目~1499行目 おおお  同じ値が入力された連続する行の数に規則性はありません。  また、異なる値の個数も作業の都度変わります。(”あああ”などの値の個数のことです) エクセルのショートカットで、 入力された最後のセルを探すのは、 「Ctrl」+「Shift」+「↓キー」で可能ですが、 同じように、同じ値が入力された最後のセルまで 何かのショートカットでセル範囲の選択をできますでしょうか? または、マクロで記述するとすると どのようなコードになりますでしょうか? 作業としましては、 A1セルを選択した状態でA800セルまでセル範囲を選択し、ある作業をします。 次に、A801セルを選択した状態でA1100セルまでセル範囲を選択し、上記と同じ作業をします。 これの繰り返しです。 行数が多いので、セル範囲を選択するときに スクロールで上手く上下させることができず面倒になっています。 よろしくお願いします。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • エクセルのマクロの作り方で、教えてください。

    エクセルのVBAを使って、選択肢を選んで答える簡単な学習ソフトを作っています。問題文を作るときは正解をいちばん左のセルに入れて、あとから3つの選択肢の順番をランダムに入れ替える簡単なマクロを作ろうとしましたがうまくいきません。たとえば、A列に問題番号、B列に問題文、C列~E列までに選択肢の1,2,3が入っています。問題は20問、つまり1から20行まで入っています。そしてコマンドボタンを押すと適当にC~Eの内容が入れ替わるようにしたいのです。私がやろうとしたのは選択肢1~3を文字列の変数にして、1行目から20行目まではループで実行させるのですが、肝心な入れ替えをどのようにしたらよいかわかりません。乱数を使ったらどうかと思ったのですが、使い方がわかりません。もっと簡単な方法があればそれも教えてください。VBAの初心者ですのでよろしくお願いします。

  • エクセル:マクロの起動条件

    お世話になります。 以下の条件でのマクロを起動する方法、及びそのマクロを教えてください。 《条件》 ブックを開いた時、あるシートのC列でデータが入っている最下行の行番号とA列のデータが入って最下行の行番号の差が100以下だった場合、マクロを実行する。 (なおC列の行番号の方が必ず大きいです) ちなみに実行したいマクロは1~6の手順です。 1.ブックを開いたとき 2.「入力用」という名前のシートのC列でデータが入っている最下行の行番号とA列のデータが入っている最下行の行番号の差が100以下だった場合 3.「入力用」というシートにかかっているシートの保護をはずし 4.データが入っているC列の最下行のA~Z列を選択して、50行分 下にコピーする。  (例えば、C列の最下行が350行の場合、A350~Z350まで を選択したあと400行まで下にコピーする。) 5.再度シートの保護をかけ 6.A列でデータが入っている最下行の1つ下のセルを選択する ちなみに、2の条件に当てはまらないときはマクロを実行しません。 またC列の最下行よりA列の最下行が大きい数字になることはないはずですが、もし同じかA列の方が大きい場合、「エラー:C列よりA列が大きくなっています」と画面に表示させたい。 なお、行番号の差:100、選択するA~Z行、50行分下にコピー は変わる可能性があるので、修正する場合どの部分を修正すればよいかも教えてください。 よろしくお願いします。

  • エクセル:複数シートの一括処理

    お世話になります。 エクセルで1つのブックに複数のシートがあります。 書式は同じですが行数がそれぞれ違います。 A列で、データが入力されている一番下のセルの次の行から、エクセルの最終行である65536行までの行を全て選択して「削除」をしたいのです。(行の削除)しかも全シート一括で。 A列でデータが入っている一番下のセルがA550だった場合、551行~65536行までを全て選択→削除を行う。 これらの作業をするためのマクロを教えてください。

  • エクセルマクロ 次のようなプログラム教えてください

    エクセルのマクロで、次のようなことをしたいと思っていますが、 素人でわかりません。 教えていただけますか。 ---------------------------------- o動かしているファイルをa.xlsとします。  a.xlsは、3行目からA列に名前、B列~D列にデータが入っていて、  各行ごとのファイルを作りたい。(行数は決まっていない)  なお、セルE1にある文字が入っている。 o各ファイルは、原紙としてgensi.xlsとして保存されているファイルに、  a.xlsのB~D列のものを入力したものを作りたい。  (B~D列のデータは、gensi.xlsのそれぞれセルC7・C8・C9に入力する)   gensi.xlsは、a.xlsと同じフォルダにあります。 o作成場所は、「C:\date」の中に、セルE1にある文字のフォルダ、A列に  ある名前のフォルダに作りたい。 (セルE1の文字のフォルダは、マクロを初めて実施するときは無いと思います  が、2回目からは存在すると思います。A列の名前のフォルダはマクロ実施時  にはありません。作成するファイル名は、A列の名前と同じ(フォルダ名と同じ).xls にします。) o実行ボタンを3つ作って、1つは今選択されている行のフォルダ・ファイルを作る。  2つ目は数字を入力させて、今選択されている行から入力した数字の行までを一括  で作成する。  3つ目は、3行目から現在入力されている行すべてを一括で作成する。 ------------------------------- 上記のことをしたいと思っています。 よろしくお願いします。 駄文ですみません。 なお、エクセルは古いバージョンでエクセル2000です。

  • セル移動マクロを教えて下さい。

    エクセルで最終行の次の行(新規入力となる行)の左4つ目のセルに移動するマクロを作りたいのですが、出来るでしょうか。 例えば列Aに1から3000までのNOが入っているとします。 B列からD列までは他のデータに使用しているため新規入力データE列の行から右に入力しています。 NO125の行までデータ入力している場合、ボタンをクリックすれば、A列のNO126(新規入力行のA列)にセルが移動するマクロです。 よろしく、お願いいたします。

  • Excelのマクロを使ってのオートフィル

    Excelのマクロを使ってのオートフィルについて教えて下さい。 類似の質問があったのですが、決まったセルからのものが多くわかりませんでした。 マクロはまだ始めたばかりです。 やりたいことはExcelの2つのシートに別のcsvファイルの数字を入れることです。 ExcelのSheet1のD1セルに日付を表す数字が入っています。 Sheet2と3には2行目に月の日付がずらりと並んでいます。 1列目には記録番号が入っています。 それぞれのシートにSheet1のD1セルと同じ日付の列を見つけて、 その下の行から1列目の記録番号を元に検索したcsvファイルのデータを引っ張ってきたいのです。   Sheets("Sheet1").Select Cells(3, (Sheets("Sheet2").Range("D1")).Select と最初に入れるセルを探しても違う列に飛んでしまったりします。 又、下のセルまで数式もコピーできずに止まったままです。 VBAまでは手が出せずに悩んでいます。どうか教えて下さい。よろしくお願いします。

  • Excel マクロを用いた入力フォーム

    Excel マクロを用いた入力フォームを作成したいと考えております。 具体的に Combobox1 でシート選択 Combobox2 で行選択 Combobox3 で列選択 Textbox1 に金額入力 を行い入力ボタンを押すと指定されたセルに入力金額が挿入されるようなものを作りたいです。 皆様アドバイスの方よろしくお願いします。

専門家に質問してみよう