- ベストアンサー
エクセルマクロ 2行とびでAからCを削除
毎月の150人分の給与データをエクセルにする必要があります。 csvデータを加工の途中で一名分のデータが3行になります。 その3行になった時点でそれぞれ各個人のデータの2行目に あたる部分のAからCを削除したいのですが、 例えば A2-C2, A5-C5, A8-C8, A11-C11 ........ A449-C449 を一括で削除する。 マクロでそういった記録は可能でしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 横からお邪魔します。 >D2-H2,D5-H5,D8-H8などのもともとA-CのとなりにあったセルデータをれぞれのセルA-Dに500人分動かすのが最終目標ですが、 >一括で3行飛びで移動させるための・・・ 結局2・5・8・・・行目のA~C列データを削除してその行の残りのデータを左詰めにすれば良いのでしょうか? そうであれば↓のコードを試してみてください。 Sub Sample1() Dim i As Long Application.ScreenUpdating = False For i = 2 To 501 Step 3 Cells(i, "A").Resize(, 3).Delete shift:=xlToLeft Next i Application.ScreenUpdating = True End Sub こんな感じをご希望だったのでしょうかね?m(_ _)m
その他の回答 (2)
- toshih2000
- ベストアンサー率22% (120/541)
単純に指定の場所を削除するだけでなく、もっと複雑な操作があるということなので、 考え方としては、一件分の操作を記録して、それを繰り返すことにより 500件程度の処理を行いたいということでしょうか? >一括で3行飛びで移動させるためのvbaの記録は可能でしょうか? ここの意味がちょっと理解しがたい部分ですが、 自分勝手に解釈すると、マクロを記録してそれを繰り返しても 同じ場所を操作するだけで、次の2件目以降の処理ができない。 ということかな? そうだとすると、ポイントは2つ 1. マクロの記録をする場合には、「相対参照で記録」をオンにして行う。 2. マクロの記録をする場合のカーソル位置に注意。記録前に1件目の先頭にカーソルを置き 記録を開始して、全ての操作後、2件目の先頭にカーソルを移動させて、記録を終了する。 自動的に繰り返すためには、記録したマクロを For~Next 等を使って 500回ループさせるなどの修正をする必要があります。 こんなところでしょうか。 ちなみに、私は Excel 2013 で確認しています。 的外れな回答でしたら、ご容赦ください。
- toshih2000
- ベストアンサー率22% (120/541)
>マクロでそういった記録は可能でしょうか? 記録? csvファイルでできるか不明ですが、 excelファイルを前提で書けば 私だったら、次のようなプログラムを VBA で書きます。 --- sub a() for i = 2 to 500 step 3 worksheets("sheet1").cells(i,1).value="" worksheets("sheet1").cells(i,2).value="" worksheets("sheet1").cells(i,3).value="" next end sub --- これは、指定の場所を空欄にするだけです。 実際に使用する場合は、事前にテストしてください。
お礼
ご教授ありがとうございます。csvデータは最初にエクセルに変換してからの作業ですから、教えていただいたvbaで確かに指定のセルデータは空欄になりますね。その後D2-H2,D5-H5,D8-H8などのもともとA-CのとなりにあったセルデータをれぞれのセルA-Dに500人分動かすのが最終目標ですが、一括で3行飛びで移動させるためのvbaの記録は可能でしょうか?最初の説明が不足ですみません、
お礼
私のつたない質問をばっちり理解してくれてありがとうございました。求めていた回答です。大変ありがとうございました。VBAはまだ本当の初心者ですがこれからももっと勉強したいと思います。改めてありがとうございました。