• 締切済み

マクロの繰り返しコード

たとえば繰り返す回数を仮にA1セルの数値を参照 してその分だけ繰り返す コードの書き方を教えてください 例として B1からB10の数値をコピーしてD1に張り付けC1に1列追加。 この作業を(A1)の回数分だけ繰り返す。 初心者です、ご回答のコードをそのまま貼り付けて利用したいので よろしくおねがいします

みんなの回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.4

例が例なのかやりたい事なのかわかりませんが、例の処理内容で。 不明なところはコメントのカッコ内とおり解釈しています。 Sub sample() Dim i As Long 'A1セルの数値を参照 してその分だけ繰り返す For i = 1 To Range("A1").Value     'B1からB10をコピーして     Range("B1:B10").Copy     '(数値で)D1に張り付け     Range("D1").PasteSpecial xlPasteValues     'C1(セルを列に拡張した範囲の左側)に1列追加     Range("C1").EntireColumn.Insert Next i End Sub

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

質問の意味が、エクセル的によくわかりません。VBAを使う前に、エクセルの基礎的なことを勉強してからでしょう。文章化が不完全。 >繰り返す回数を仮にA1セルの数値 A1セルの値が数値5の場合なら Sub test01() x = Range("A1") For i = 1 To x MsgBox "AAA" & i '実際は、処理内容のコードをここへ挟む Next i End Sub >例として B1からB10の数値をコピーしてD1に張り付けC1に1列追加 ここが意味不明。 上記の変数 i で 「コピー(元)する」場所を決定したり(一定で変わらない場合もあるだろうが)、張り付ける「列」(コピー先)(番号で決める)も i  を用いて、式的に表現できなくてはならない。 列を増やして、そこに張り付けたいなら、貼り付け先は5回を通じて、列番号は変わらない(変えなくても良い)場合もあるだろうが。 しばらくは、色々経験する必要があろうと思うが、アドバイスする人が必要だろう。でなければVBAのスクールに通うとか。WEB上に質問するにも、それなりの勉強や経験が必要です。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.2

こんな感じでしょうか。 Option Explicit Public Sub MyCopy() Dim a As Integer Dim i As Integer With ActiveSheet a = .Range("A1").Value For i = 1 To a .Range(.Range("B1"), .Range("B10")).Select Selection.Copy .Range("D1").Select .Paste .Columns("C").Insert Next i End With End Sub

  • kkkkkm
  • ベストアンサー率65% (1618/2457)
回答No.1

> B1からB10の数値をコピーしてD1に張り付けC1に1列追加。 10個のデータをひとつのセルにコピーするということ? C1に一列追加とは?C1はセルで列ではありません。 コピペで使いたいのでしたらもっと具体的に書かないと使えないと思いますよ。 やりたいことをマクロの記録で記録してそのコードをA1の数値分繰り返す Sub Test() Dim i as Long For i=1 to Range("A1").value ここから 記録でできた Sub Macro1()とEnd Sub の間にあるコードをいれたらできると思いますよ。 ここまで Next End Sub

関連するQ&A

  • エクセルのマクロで特定の文字があるときだけコピーできるようにしたい

    エクセルのマクロで特定の文字があるときだけコピーできるようにしたい エクセルでこういう表があるとします ココカラ 1 * 2 b 15 3 * 4 d 19 5 e 25 6 * 7 g 35 8 * 9 j 46 10 k 54 ココマデ このような表があるとき、マクロを使ってもしB列に「*」以外の文字(この場合アルファベットのb) があるときは左のセル(2)をずっと下のセルにコピー(仮にA50とします)した後、右のセル(15)をB51にコピー、 次は文字が「*」なのでコピーはせずにd列になったら4と19をC50,D51にコピー・・・ という作業をセルに「ココマデ」と書いているところまで繰り返す、というマクロを作りたいのですが、どうすれば いいのでしょうか?

  • エクセルのマクロのコードを教えてください

    エクセルマクロについて教えてください。 エクセルバージョンは2013です。 現在定例業務の改善を行っております。手作業で実施している作業をマクロで自動化したくコードを教えてください。〈作業〉 1台帳.xlsのA~F列でデータを入力してデータベースを作成しています。 2そのデータを社内他部署送付用の定型フォーマットに転記して所定のフォルダに名前を付けて保存しています。定型フォーマットのC1に台帳.xlsのB列のデータ、D4にC列のデータ、F5にE列のデータを転記して台帳.xlsのA列のデータをファイル名に追加して所定のフォルダにほかんします。(ファイル名例「案件+A列のデータ.xls」) ※定型フォーマットも所定のフォーマットフォルダで管理しています。いつもそれをコピーして使用しています。 3保存したファイルの保管場所のファイルパスを台帳.xlsのG列に転記してハイパーリンクにする こんな作業になります。台帳.xlsのデータは不定期で増えていくので1件ずつ実行できればと思っています。実行済みと未実行の判別はどこかの列の「済」なんかつけて条件判別できればと思っています。 よろしければ教えてください。 (1)所定のフォルダは仮でマイドキュメントの「案件保管フォルダ」 (2)定型フォーマットはマイドキュメント直下においてある (3)定型フォーマットはの「案件詳細」シートに転記 (4)案件は文字列としてプラスA列のセルのデータを使用して「案件保管フォルダ」に保管しています。

  • 再度 マクロの「繰り返しコード」の質問です。

    宜しくお願いします。まったくの初心者です。 今、A1~A5には数値。 隣のB1~B5には=RUND()の関数。 ("A1:B5")をセレクトして並び替え、 (ソート最優先キーはB列、降順) この乱数を並び替えして、E1にコピー、そしてG列に1列挿入する。 これを10回繰り返したい。 というコードが、なかなか作れません。 何方か教えてください。

  • 関数やマクロを使用して出来ませんか?

    初心者です。 いろいろと自分なりに調べているのですが、よく分からず教えてください。 例) B列、D列で(BB・BD・DDなど組み合わせは問いません)同じ数値が2つ揃った時、A列にある同じ数値のセルの隅に✔が自動についたり、セルの中に薄く‘済み’と表示させたりするなど、同じ数値が2度打ち込まれているか、A列を見るだけで確認することは出来ませんでしょうか? ※ちなみにセルの色や文字色を変化させることは考えていません。 分かりづらい点もあるかとは思いますが、ご教示ください。 よろしくお願いいたします。

  • エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセル

    エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセルの条件によって「値」のみ残す方法を模索しております。 使用する列および行の例 列=A、B  行=5~10、15~20、25~30(A列、B列共通) 上記対象セルの内訳 A列(参照セル)=数値 ※空欄の場合もあります B列(変更セル)=数式(Aセル数値 * ○○%) ※B1セルの例:=IF(A1="","",A1*10%) のような数式が記入されております。 (例) Private Sub CommandButton1_Click() ’参照セルの指定 ("A5:A10","A15:A20","A25:A30") のようなコード*** ※現在はAセルの範囲としておりますが、後に変更の可能性を有しますので範囲指定が可能な形式を望みます。 ’変更セルの指定 セル指定のコード*** ※現在はBセルとしておりますが、これも後に変更の可能性を有しますのでA・B・Cのような入力(もしくはA=1、B=2、C=3)による指定可能な形式を望みます。 ’参照セル(Aセル)に数値が入力されている場合、数式から得られた変更セル(Bセル)の値を”値のみ”で残す。 実行コード*** ※参照セル(Aセル)が空欄の場合は変更を望まないので、変更セル(Bセル)は何も致しません。(数式のまま残す) End Sub このようなマクロを望んでおります。 イメージとしては数値がAセルに入力されていた際に同じ行のBセルにおいて右クリックコマンド内〔コピー〕 → 〔形式を選択して貼り付け〕 → 〔値〕の貼り付けを行うことをご想像下さい。 列や行の変更が予想されるので変更が可能なことを望んでおりますが、結果が伴えば他の体裁は気に致しません。 お手数ですがご教授宜しくお願い致します。 以上

  • オートフィルターで抽出後の集計 ユーザー定義関数

    以下のようなテーブルがあったとします。(図参照) A列 ID B列 数値A C列 数値B D列 抽出A E列 抽出B フィルターでD列E列で抽出した後に、B列の数値、例えば数値が1~3あるとします。 それぞれ1~3のC列の数値の合計の式をユーザー定義関数で作ることは出来ますでしょうか? コードかけません宜しくお願いします。 式1 フィルター抽出後のB列の1という数字のみのC列の数値の合計 式2 フィルター抽出後のB列の2   同様 式3 フィルター抽出後のB列の3   同様 VBAの知識はあまりありませんが、モジュールの追加とコードを貼り付ける作業は出来ます。 エクセル2013 64bitです。 宜しくお願いします。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • エクセルのセルを参照して別シートに張り付ける

    こんにちは。 エクセルのsheet1とsheet2があり、sheet1のセルに入力されている文字や数値をsheet2にコピーしたいと思っています。ただし、コピー先のsheet2のセルの値は、sheet1を参照するだけでなく文字や数値として表示できないかと悩んでいます。 図で説明すると  (sheet1)                →           (sheet2)   A    B    C     D           A     B    C     D 1あああ  10  いいい  えおう        1いいい  えおう  10    あああ 2あああ  10  いいい  かけこ       2いいい  かけこ  10    あああ 3あああ  10  いいい  みまつ       3いいい  みまつ  10    あああ  4あああ  10  いいい  さぐも        4いいい   さぐも   10    あああ また、上記のようにsheet1とsheet2の列は同じ場所ではありません。 このような作業を1回で行うことはできるのでしょうか? よろしくお願いします。

  • マクロで色つけ

    EXCEL2000で、条件に合うときセルを塗りつぶすマクロを作りたいので教えて下さい。 A列にはA01やB02など「英数数」の3桁のコードがあります。 A列がDから始まるときにF列G列をグレーに塗りつぶしたいのですが、 元々セルには黄色で配色していて、その後F列G列に入っている数値を確認したあとは、塗りつぶしを消します。 A列がDから始まるとき、F列とG列が、塗りつぶしがなければそのままで、黄色の時はグレーにするマクロを作成するにはどのようにすればよいでしょうか?

  • Excelのカウント

    セルA列に入力されている数値を参照し、セルB列のように出力したいです。 セルA2に0と入力されていれば、BセルB2、B3、B4、B5に0になるようコピーしたいのですが、数が膨大なためどなたかよい対処法をどなたか教えて頂けないでしょうか。 ちなみに、A列に入力されている数値は0と1のみになり、A列の数値はランダムに入力されています。

専門家に質問してみよう