アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAで以下のことを実現したいと思っております。
例えばですがデータの構成が7行で1名分の個人情報となっているデータがあります。

例:
  A  B
1 太郎 住所
2    電話
3    メールアドレス
4    誕生日
5    年齢
6    性別
7    既婚
8 花子 住所
以下続く
取り扱う件数が数十件から数千件と幅があります。

ここからあらかじめユーザーが指定している項目のみを人数分だけ削除したいと思っています。

B列を検索し設定された項目名にヒットした行を逐一消していく方法が一番安全かと思っているのですが、複数の行を選択し一括で削除する方法はありますでしょうか?
複数の行選択で調べたところ
Range("3:3,12:12,,22:22").Select
という書き方は分かったのですが、削除する範囲と項目が事前に分からないため
つまずいてしまいました。

他にもっといい方法がありましたら知恵を貸してください。
どうかよろしくお願いいたします。

A 回答 (3件)

要は選択した複数行を「一括」削除したいようですね。

下記は、削除条件に該当するセルをUnionメソッドにより全部rngに溜ておき、For Nextループ終了後に一括で行削除する例です。

Dim rng As Range
For i=1 to N
 If ○○ Then '削除条件
  If rng Is Nothing Then
   Set rng=Cells(i,"B")
  Else
   Set rng=Union(rng,Cells(i-1,"B"))
  End If
 End If
Next i
rng.EntireRow.Delete
    • good
    • 0
この回答へのお礼

High_Scoreさん

ありがとうございました。
無事解決いたしました。助かりました。
恥ずかしながらRangeとUnionの機能を全く知りませんでした;
処理のスピードも格段にあがり他でも活用していきたいと思います。

お礼日時:2015/04/20 09:19

No2です。

修正があります。
7行目
誤 Set rng=Union(rng,Cells(i-1,"B"))
正 Set rng=Union(rng,Cells(i,"B"))
    • good
    • 0

やりたいことが見えてないかもしれませんが


例 6行目の性別を全て削除したい
For i = Range("B" & Rows.Count).End(xlUp).Row To 7 Step -7
Rows(i - 1).Delete Shift:=xlUp
Next
こういった事でしょうか?
B列の最終行から、7行ずつ下げていく
その下の行を削除する。
    • good
    • 0
この回答へのお礼

hallo-2007さん
早速の回答ありがとうございます。
はやり複数の行を選択し一括削除という処理はできなそうですね;
しかしhallo-2007さんから教えてもらった方法はとても参考になりました。
ありがとうございます。

お礼日時:2015/04/19 19:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!