Page 493 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼特定の数字が入力されている行全体を消したい。 はらへりおおかみ 02/12/29(日) 15:27 ┗AutoFilterで... こう 02/12/29(日) 16:59 ┗Re:AutoFilterで... はらへりおおかみ 02/12/29(日) 17:47 ┗Re:AutoFilterで... こう 02/12/29(日) 19:17 ┗Re:AutoFilterで... はらへりおおかみ 02/12/29(日) 19:56 ┗SpecialCells こう 02/12/30(月) 15:58 ┗Re:一括削除 Jカーター 02/12/30(月) 16:26 ┗ありがとうございました。 はらへりおおかみ 02/12/31(火) 8:01 ─────────────────────────────────────── ■題名 : 特定の数字が入力されている行全体を消したい。 ■名前 : はらへりおおかみ ■日付 : 02/12/29(日) 15:27 -------------------------------------------------------------------------
質問です。Excel VBAで (行番号) A(列) B(列) 1 1 かば 2 2 からす 3 3 まんぼう 4 2 ぞう 5 3 あんこう 6 1 らいおん : : : と入力されているとき、A列の”2”が入力されている行全体を削除するという場合どのようにしたら、よいのでしょうか? 結果が 行番号) A(列) B(列) 1 2 からす 2 2 ぞう : : : のようにA列に2が入力されている行のみ残るようにしたいのですが。よろしくお願いします。 |
はらへりおおかみ、こんにちわ。 >と入力されているとき、A列の”2”が入力されている行全体を削除するという場合どのようにしたら、よいのでしょうか? >結果が >行番号) A(列) B(列) > 1 2 からす > 2 2 ぞう ちょっと思惑が違うかもしれませんが、AutoFilterではいかがでしょう? 1行でできます。 Columns("A:B").AutoFilter Field:=1, Criteria1:="2" |
▼こう さん: 回答ありがとうございました。 >Columns("A:B").AutoFilter Field:=1, Criteria1:="2" を早速使って解決しました。ありがとうございました。 |
▼はらへりおおかみ さん: >回答ありがとうございました。 >>Columns("A:B").AutoFilter Field:=1, Criteria1:="2" >を早速使って解決しました。ありがとうございました。 あっ、 1行目はタイトル行ですので、2行目から集計対象になります。 気をつけてください。 |
もう一つ、質問してもよいですか? AutoFilterで抽出してきた行のみ削除するにはどうしたら良いのでしょうか? 例えば Columns("A:B").AutoFilter Field:=1, Criteria1:="2" で抽出してきた行のみ削除するという事は可能でしょうか? |
はらへりおおかみさん、こんにちわ。 >AutoFilterで抽出してきた行のみ削除するにはどうしたら良いのでしょうか? SpecialCells(xlCellTypeVisible)で可能です。 たとえば、AutoFilterで抽出後に、表示されてる行を取得するには Columns("A:B").AutoFilter Field:=1, Criteria1:="2" セル範囲 = "A2:A" + CStr(ActiveCell.SpecialCells(xlLastCell).Row) For Each i In Range(セル範囲).SpecialCells(xlCellTypeVisible) Debug.Print i.Row Next i で可能です。 > Columns("A:B").AutoFilter Field:=1, Criteria1:="2" >で抽出してきた行のみ削除するという事は可能でしょうか? 上記のSpecialCellsで見つけた行を削除すれば可能だと思いますが、 別に「AutoFilterで引っ掛けて削除」しなくても、普通に検索&行削除 でOKだと思います。少々ベタですが、 For i = ActiveCell.SpecialCells(xlLastCell).Row To 1 Step -1 Debug.Print i If Cells(i, 1) = "2" Then Rows(i).Delete End If Next i |
オートフィルタなら一括削除が可能では? Sub test() Range("A:B").AutoFilter 1, "2" With ActiveSheet.AutoFilter.Range On Error Resume Next .Offset(1).Resize(.Rows.Count - 1) _ .SpecialCells(xlVisible).EntireRow.Delete (xlUp) On Error GoTo 0 End With End Sub 間違いがありましたらご容赦ください。 |
こうさん、Jカーター さん、ありがとうございました。早速、お二人の方法を試して見ます。 VBA勉強してもっといろいろなことができるように、頑張っていきたいと思います。 |