• ベストアンサー

マクロでできますか?

マクロでやろうと思ってもいい方法がおもいつきません。どうやったらいいでしょうか? ある条件(例えばA1にある数式がありその値が10以上になったとき)をクリアしたら、A5~B9のデータを D5~E9にコピーし、また条件をクリアしたらA5~B9のデータを今度はF5~G9にコピーするというように条件をクリアするごとにとなりへコピーしたいのです。 コピーは50回くらい繰り返す予定です。 コピーしていく方向もどうしてもこのように列方向にしたいのです。 よろしくおねがいします。

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

  • ベストアンサー
  • tksoft
  • ベストアンサー率36% (99/273)
回答No.1

とりあえず、アプリケーションはExcelでいいですか? Excelと仮定して 次のようなマクロはどうでしょう? Sub right_copy() Const right_moov As Integer = 2 'データの列数 Const record_sta As Integer = 5 'データ行の開始行 Const record_cnt As Integer = 5 'データ行のの行数 Const conditions As Integer = 10 '条件 Dim Row As Integer, Col As Integer '処理する行(Row)と列(Col) If (Range("A1") >= conditions) Then 'セルA1が条件の値以上だったら以下の文を実行 Dim moov As Integer moov = right_moov + 1 '次の文でで何列横にコピーするかを決定 Do Until Cells(record_sta, moov) = "" moov = moov + right_moov Loop 'コピーの実行 For Col = moov To moov + right_moov - 1 For Row = record_sta To record_sta + record_cnt Cells(Row, Col) = Cells(Row, Col - moov + 1) Next Next End If End Sub セルA5~B9にデータを入れ、セルA1に適当に数字をいれてマクロを実行してみてください、条件に一致(値が10以上)の時、マクロを実行するたびに、右へ右へとコピーしていきます

punba99
質問者

お礼

説明不足ですみません。エクセルでした。ご回答ありがとうございます。大変参考になりました。またよろしくお願いします。

その他の回答 (1)

回答No.2

条件をクリアしD5~E9にコピーした後、A5~B9のデータに上書きして、データを入力されるのでしょうか?それとも、B10から入力されるのでしょうか? もし、上書きされるのであれば、マクロ1回の実行で処理を終えるのは、難しいような気がするのですが・・・。

punba99
質問者

お礼

ご回答ありがとうございます。A5~B9のデータは上書きされます。たしかに1回のマクロ実行では難しいですかね。No1の回答を参考にがんばってみます。またよろしくお願いします。

関連するQ&A

  • VBA 他シートを参照しているセルのコピー

    お世話になります。 以下のシートがあります。 [sheet a]    A     B        C      D     E 1 2004 2005 2006 2007 2008 2 =b!A2 =b!C2 =b!E2 =b!G2 =b!I2 3 10 15 16 4 11 4 12 30 20 9 2 5 =SUM(A3:A4) =SUM(B3:B4) =SUM(C3:C4) =SUM(D3:D4) =SUM(E3:E4) [sheet b] A B C D E  F G H I J 2004 2005 2006 2007 2008 1 あ1 い1 う1 え1 お1 か1 き1 く1 け1 こ1 2 あ2 い2 う2 え2 お2 か2 き2 く2 け2 こ2 ・・・・・・・・・ [sheet a]F列以降に入れるデータは、VBA(マクロ)を使って、別のブックから取り出しています。 (例) F1…=E1+1(E1の数式をコピー) F3,F4…任意の値(別のブックからコピー) F5…=SUM(F3:F4)(E5の数式をコピー) 1行目,5行目の場合は左のセルをコピーして数式を貼り付けると、列が自動的に列が変わりますが、2行目の場合は元のシートを1行おきに参照しているので、単純にコピーしただけでは正しい数式が入りません。 2行目の参照をVBAで作るには、どのようにしたらいいでしょうか。 よろしくお願いします。

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

  • マクロを使用した選択セルの値のコピーについて

       A   B   C   D   E   F   G 1 10  15       9   23  33  55 2             10   33  44  56 3             11   44  55  57            4             12   55  66  76 5             13   23  77  87 6             14   33  88  88 7             15   45  99  99 8             16   55  21  56 9             17   66  45  76 10            18   77  52  54 質問です A1の値が10 B1の値が15 でA1とB1の値は各データによって異なって入力されています。 決まりとしては、 A1<B1で, 必ず、A1の値とB1の値はD列に存在します。 A1の値とB1の値をマクロで取得し、 D列でその選択範囲を検索し、D列の10~15の値の選択範囲で、 D2:G7までをうまくコピーし、違う場所に張り付けしたいのです。 もし、詳しい方がいらっしゃいまして、簡単にできる方法がありましたら、 ご指導の程お願い致します。

  • Excel2007のマクロで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • エクセルでのデータの照合

    お世話になります。WindowsXPエクセル2003を使っているマクロ初心者です。 A B C D E F G 1 2 3  1 2 2 2 3 4  2 3 4 3 4 5  2 4 5 4 5 6  4 4 6 5 6 7  5 6 8 (左グループを元データ、右グループを加工データとします) A列とE列・B列とF列・C列とG列…という流れでデータを比較し、 元データと値の違うセルの色を変え、赤の太字にするようなマクロを作るには どのように書けばいいのでしょうか。 上記例の場合では、E3・F5・G2・G7のセルを変化したいということになります。 条件付書式でも試してみたのですが、なかなかうまくいかなかったため、 これからマクロに触れる機会も増えることを考えて、マクロで対応したく思い、 連絡させていただきました。宜しくお願いいします^^

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excelの入力式について

    Excelの入力式について教えてください。 たとえば、A1セル~F1セルに数値が入っていて、G1セルA1+B1の値、H列にC1+D1の値 I列にE1+F1の値としたい場合、 G1セルに数式を入れてH列にコピーするとB1+C1になってしまいます。 上手くやる方法はないのでしょうか。 1列ずつわざわざ空白列を作るのは嫌ですし、たくさんあったら数式を打ち込むのも大変です。。。

  • エクセルでのマクロについての質問です

    毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。

  • マクロについて質問です。

    office2003を使用しています。 sheet1のデータをコピーし、sheet2の表にsheet1のデータを張り付けるマクロを作成して欲しいと言われました。 ・コピー元のsheet1はセルの結合が有ったり無かったりの表データになってます。 ・貼り付け先のsheet2はセルの結合が無い表です。 ・sheet1からsheet2への貼りつけは全てではなく、抜粋されたデータになります。 ・貼り付け先の列も変わっています。 ・sheet2には数式が入った列が加わり、小数点第二位表示です。セルの書式は右寄せや中央、桁区切りがあります。 ・sheet1は可変データです。 2~3位で終わるのもデータの時もあれば20まであったりする時もあります。 sheet2の表の罫線はデータの分だけ引きたいと思っています。 マクロは初心者同然で自動マクロ程度のレベルです。 わかりにくい説明で申し訳ありませんがご教授ねがいます。 sheet1   A  B      C        D    E    F      G  1 No. 名前    上)住所  年齢  商品  金額   担当者             下)電話 2           秋田    1  アイウエオ        20    A   10,000   タナカ 3           123456 4           鹿児島   35    D   15,000   ヨシダ   2  カキクケコ   5           987654 ※sheet1はC列以外の2・3、4・5行はセルが結合されています。    2行で1人のデータになります。 ↓コピー貼りつけをする sheet2    A  B      C     D    E     F      G     1 No. 担当者  名前    住所  商品  金額   原価 2  1  タナカ  アイウエオ  秋田  A  10,000   7,500.00(数式が入っている)  3 2  ヨシダ   カキクケコ  鹿児島 D  15,000   6,800.00         

  • マクロの記録で作成したマクロがデータが代わると誤動作する。

    マクロの記録で作成したマクロがデータが代わると誤動作する。 エクセルファイルにてA列からJ列までデータがあります。 行数は2,000行です。データは全て半角です。 A列の値が 1=入庫 2=出庫 3=戻入 と全て置換 B列の値が 1=社内品 2=社外品 3=受入 と全て置換。 でこのB列が3で受入に置換えたら その隣のA列の値を 受入に置き換えたい。 さらに A列の値が置換え後の入庫と戻入場合はその行のJ列の値を切り取り、K列に貼付をし A列の値が置換え後の出庫の場合はその行のJ列の値を切り取り、L列に貼付をしたいです。 マクロの記録で行いましたが、 いったんデータを全て消して別データを貼り付けしたらA列B列の置換えは正常ですが B列が3の場合にA列を再置換えと、J列の値を切り取り、K列、L列への貼付が 誤動作します。 (別データは雛形は同じです。入力規則も同じですがデータは変わります。  例:セルA1のデータは1、 新しいデータはセルA1は2 等) マクロの記録中では、並べ替えでソートし上記条件でセルを選択しコピペをしました。 並べ替えは2回です。 マクロ文を見ると、セル名がずらずら並んで、セル番号が指定されてます。 (マクロ記録中に選択したセル番号が全部記録されてます。) 文を見ると、上記条件で置換えやコピペでなく このセルはこう置換え、このセルはこうコピペのように読めます。 これでは、データが代わったら、別の動きになるのかな?と思いました。 こういう場合はマクロではどうやって記録すればいいでしょうか?

専門家に質問してみよう