EXCEL2000のVBAでプログラムを組みました.(下に記す)
数千行に及ぶ数字のデータがあるのですが,20行に1回だけ,いらないデータが3行出てきます.その3行を削除していくプログラムです.Rangeのところで行を選んで欲しいのに,p列とq列を選んでしまうようです.RangeをRowsに変えたらエラーが出ました.こういう場合はどのように書けばいいのでしょうか.誰か教えてください.お願いします.
Sub 削除()
'20行ごとに入っている3行を削除していく.
Dim i As Integer
Dim p As Integer
Dim q As Integer
p = 21 'pの初期値は21
For i = 1 To 500
q = p + 2
r = "p:q"
Range(r).Select
Selection.Delete shift:=xlUp
p = p + 20
Next i
End Sub
No.7ベストアンサー
- 回答日時:
No.4 ですが、ちょっと追記です。
p = 21 'pの初期値は21
For i = 1 To 500
q = p + 2
Rows(p & ":" & q).Delete
p = p + 20
Next i
この場合、21+20*500 行まで処理するつもりが、繰り返す毎に行番号が
繰り上がりますので、10021行以降の行も同様に削除されてしまいます。
と思ったのですが・・・
しかし、この内容から察すると、最後まで同じ行パターンでデータが、
並んでいるようなので(たぶん)、支障ないかと思います。
余計なことを書いたかな?
回答していただきありがとうございます.
ご指摘のように書き直してみたら動いてくれました.
Rows(p & ":" & q)のところの書き方は私の持っている初心者用の参考書には書いてなかったので助かりました.
ありがとうございました.
No.6
- 回答日時:
#1です。
500回ループなら
Sub TEST()
Dim i As Long
For i = 21 To 10001 Step 20
Rows(i).Resize(3).Delete
Next i
End Sub
にしないとダメだった、、訂正です。(^^;
話題になっている削除は下からについては、私的には削除したいデータと次の削除したいデータの間に20行必要なデータがある、
21~23行が無駄データ
24~43行の20行が必要データ
44~46行が無駄データ
47~66行の20行が必要データ
67~69行が無駄データ
・
・
こんな感じのデータを想定しています。
そうじゃなかったら、他の皆さんのご指摘通り見直しが必要でしょう。
回答していただきありがとうございます.
データの配列はまさにお察しの通りです.
回答に載せていただいたプログラムは見た事のないやり方だったのですが,はしらせてみるとうまくいきました.
今回は別のやり方を使うことにしましたが,次の参考にしたいと思います.
ありがとうございました.
No.5
- 回答日時:
直接の解答ではないのですが、ご参考になれば。
#4のご解答の後半のご指摘を、今まで数度小生は経験して、その時頭がぐるぐる回ってしまい・・。
それ以来は、別シートに結果を作る方法を出来るだけ考えています。
ロジックは
20行に達する(部分カウンタが20に達する)までは、読むと別シートへ移す。
その間に別シートは移されたら別シートの行を指すポインタを1つ下行へ移す。
部分カウンタを1アップ。
部分カウンタが20になったら
あと3行は別シートに移さない。(読み飛ばし的)
部分カウンタを1に戻す。
全体のカウンタで500を押さえる。
回答していただきありがとうございます.
いろんな人の回答を見て,いろんな考え方があるんだなと思いましたが,imogasiさんのものは特にそうでした.
今回は別のやり方を使いますが,これからの参考にしたいと思います.
ありがとうございました.
No.4
- 回答日時:
'r = "p:q"
↓
Rows(p & ":" & q).Select
でいいと思いますが・・・ ですが、その前に ちょっと考えてみましょう。
行を削除するのですね。
上から、行を削除して行くと、1回3行を削除すると、その次から、
その下にあるデータの行番号は、変わってしまうんですよ。
この辺のことを考慮してみたらどうでしょうか。
No.3
- 回答日時:
上から削除していくと削除の度に行がずれてくるので
For i = 500 To 1
にしないとダメだと思うのですが、、、
そうか、、前もって削除する行にフラグをたてて、
For i = 1 to 500
で、、1行ずつ消していってもいいかと思います。
回答していただきありがとうございます.
削除する度に行がずれていくことに関しては私の説明不足でしたが,必要な行と無駄な行が20行・3行・20行・3行というふうに並んでいるので,ずれることは気にしなくてもいいようになっています.
結局,いろんな方のアドバイスで問題は解決しました.
ありがとうございました.
No.1
- 回答日時:
こうすればOKです。
r = p & ":" & q
↓これでも同様の結果になると思います。
Sub TEST()
Dim i As Long
For i = 21 To 500 Step 20
Rows(i).Resize(3).Delete
Next i
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAプログラミング 2 2022/11/27 12:07
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
Adobe AcrobatのPDFのページ削除
-
mp3の埋め込み画像の削除ができ...
-
ダブルクォーテーションの削除...
-
Microsoft Access 2016でエラー...
-
喧嘩をしてLINE削除され、 また...
-
VBA:Openステートメントで開い...
-
【エクセル】セル内の右側のみ...
-
猫にグラグラの熱湯かける動画...
-
告白してフラれた相手の連絡先...
-
もう関わりたくない人がいたらL...
-
ウェブページへのアクセス不可 ...
-
MP3プレーヤー本体で曲の削除は...
-
LINE友達削除した後にLINEが消...
-
エクセルVBAで行削除時にエラー...
-
SDカードの音楽の消去
-
ORA-14452について
-
マクロで特定の行まで削除する...
-
【PL/SQL】 DELETE文で削除され...
-
iPHONEのカレンダー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahooフリマってどれくらい時間...
-
VBA:Openステートメントで開い...
-
指定した文字があった場合、そ...
-
バッチファイルを使用したsql@p...
-
もう関わりたくない人がいたらL...
-
【エクセル】セル内の右側のみ...
-
アクセスにおいて間違って削除...
-
Windows11に残されたWindows10...
-
喧嘩をしてLINE削除され、 また...
-
告白してフラれた相手の連絡先...
-
VBA IF文でORを使ったとき後ろ...
-
Facebookに私が2つのってます...
-
エクセルVBAで行削除時にエラー...
-
エクセルで住所の混在する「丁...
-
女友達にLINEしたら、既読スル...
-
今日の日付が過ぎたらその行を...
-
マクロで特定の行まで削除する...
-
すべてやりきった、大満足を意...
-
Adobe AcrobatのPDFのページ削除
-
エクセルで下の空白行を削除したい
おすすめ情報