- ベストアンサー
マクロでできますか?
マクロでやろうと思ってもいい方法がおもいつきません。どうやったらいいでしょうか? ある条件(例えばA1にある数式がありその値が10以上になったとき)をクリアしたら、A5~B9のデータを D5~E9にコピーし、また条件をクリアしたらA5~B9のデータを今度はF5~G9にコピーするというように条件をクリアするごとにとなりへコピーしたいのです。 コピーは50回くらい繰り返す予定です。 コピーしていく方向もどうしてもこのように列方向にしたいのです。 よろしくおねがいします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、アプリケーションは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以上)の時、マクロを実行するたびに、右へ右へとコピーしていきます
その他の回答 (1)
- kaekaekaede
- ベストアンサー率34% (11/32)
条件をクリアしD5~E9にコピーした後、A5~B9のデータに上書きして、データを入力されるのでしょうか?それとも、B10から入力されるのでしょうか? もし、上書きされるのであれば、マクロ1回の実行で処理を終えるのは、難しいような気がするのですが・・・。
お礼
ご回答ありがとうございます。A5~B9のデータは上書きされます。たしかに1回のマクロ実行では難しいですかね。No1の回答を参考にがんばってみます。またよろしくお願いします。
お礼
説明不足ですみません。エクセルでした。ご回答ありがとうございます。大変参考になりました。またよろしくお願いします。