No.1ベストアンサー
- 回答日時:
こんにちは!
色々やり方はあると思いますが、オートフィルタをご希望だというコトですので
一例です。
E列を作業用の列として使用しています。
Sub Sample1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range(Cells(2, "E"), Cells(lastRow, "E")).Formula = "=IF(AND(C2=0,D2=0),1,"""")"
Range("A1").AutoFilter field:=5, Criteria1:="<>1"
End Sub
こんな感じではどうでしょうか?m(_ _)m
この回答へのお礼
お礼日時:2015/08/10 22:47
ご回答ありがとうございました。
コードを貼り付け使用しました。
希望通り複数行に(C列、D列)に0のある行のみ非表示になりました。
E列に1を代入しない方法があればより良いです。
No.2
- 回答日時:
これでいかがでしょうか?
標準モジュールに以下をコピペして下さい。
シート名などの指定はありませんでしたので、現在開いているシートで動作するマクロです。
Sub sample001()
'
Range("A1").AutoFilter Field:=3, Criteria1:=0
Range("A1").AutoFilter Field:=4, Criteria1:=0
End Sub
No.4
- 回答日時:
私には、補助列なしでは、今の段階ではオートフィルタでは出来ませんでした。
この条件は「両列ともに、そのセルが0ではない」「片方の0は許す」ということですね。数式の部分を書き換えれば、いろんな応用が利きます。 "=OR(C2<>0,D2<>0)"
以下、ダブルクリック・イベントによる、抽出マクロです。
イベント・ドリブン型ではなく、ボタンにするなら、Target を、ActiveCell に書き換えて、ボタンのコード部分に入れてください。
シートタブを右クリックして、[コードの表示] をクリック
そして以下を貼り付けます。
データのある場所で、ダブルクリックすれば、ご希望通りなります。
もし、元に戻したければ、同じくデータのある所で、ダブルクリックすれば戻ります。クライテリアは、データのない所なら、任意の場所に可能ですが、記述は残しません。
'//
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Dim Rng As Range
Dim mCrit As Range
If Target.Value <> "" Then
Set Rng = Target.CurrentRegion
On Error Resume Next
ThisWorkbook.Names("Criteria").Delete
On Error GoTo 0
'クライテリアは残りませんが、この場所がまずければ、別の場所を設けてください
Set mCrit = Range("AA1:AA2") '必ず上下のセルが必要
End If
If ActiveSheet.FilterMode = False Then
mCrit.Cells(2, 1).FormulaLocal = "=OR(C2<>0,D2<>0)"
Rng.AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=mCrit, Unique:=False
mCrit.Clear 'クライテリアを消す
Else
Rng.AdvancedFilter 1, mCrit, , 0
End If
End Sub
'///
No.5
- 回答日時:
先の回答大変失礼致しました。
オートフィルタ機能では計算列を使用しない限り難しいようです。
行の非表示でも宜しければ、以下のコードで可能です。
非表示にする場合は、「Sub 非表示()」を
再表示したい場合は、「Sub 表示()」を実行して下さい。
Sub 非表示()
Dim n As Long, i As Long
n = Range("C:D").Find("*", , , , xlByRows, xlPrevious).Row
For i = 1 To n
If Range("C" & i) = "0" And Range("D" & i) = "0" Then
Rows(i).EntireRow.Hidden = True
End If
Next i
End Sub
Sub 表示()
Dim n As Long, i As Long
n = Range("C:D").Find("*", , , , xlByRows, xlPrevious).Row
For i = 1 To n
If Range("C" & i) = "0" And Range("D" & i) = "0" Then
Rows(i).EntireRow.Hidden = False
End If
Next i
End Sub
No.7
- 回答日時:
No.1です。
>E列に1を代入しない方法があればより良いです。
ということですので、No.5さんと同じようなやり方になりますが・・・
(今回はフィルタではありません)
Sub 非表示()
Dim c As Range, myRng As Range, myArea As Range
Dim myFirst As Range, myFound As Range
With ActiveSheet
Set myFound = .Range("C:C").Find(what:=0, LookIn:=xlValues, lookat:=xlWhole)
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = .Range("C:C").FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
For Each c In myRng
If c.Offset(, 1) = 0 Then
If myArea Is Nothing Then
Set myArea = c.Offset(, 1)
Else
Set myArea = Union(myArea, c.Offset(, 1))
End If
End If
Next c
If Not myArea Is Nothing Then
myArea.EntireRow.Hidden = True
End If
End If
End With
End Sub
※ 非表示を解除するコードも必要かと思います。
↓のコードを追加しておいてください。
(再表示のコードです)
Sub 再表示()
ActiveSheet.Rows.Hidden = False
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- その他(買い物・ショッピング) JANコードの登録について 1 2022/07/23 14:19
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- 仕事術・業務効率化 エクセル 任意の列(日付)を起点に一定の日数でデータを取り出したい。 4 2022/04/28 12:22
- Excel(エクセル) Xlookupの結果がうまくいきません。(excel2013) 2 2023/06/18 17:32
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- メルカリ <メルカリShops>消費者庁による販売許可の出ている機能性表示食品?の調べ方から 1 2022/11/24 17:46
- Excel(エクセル) エクセル count関数で出てきた数だけの行数をリンクで参照する 3 2022/08/10 12:02
- Excel(エクセル) ピボットテーブルの表示変更の仕方 初心者なので、的外れな質問だったらすみません 受注日ごとに商品名と 1 2022/04/26 23:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
オートフィルタ後のデータから...
-
エクセルで行の高さ及び列幅の...
-
矩形範囲の複数列を縦1列に並...
-
急ぎ!色のついたセルを非表示...
-
Excelで並び替え後にア行...
-
文字列を比較し、相違するフォ...
-
複数回答のクロス集計の方法
-
エクセル VBA 行間隔を飛ばした...
-
検索条件に合うセルの個数を数...
-
Excelで複数列のデータを1列に...
-
マクロで行の高さを設定したい
-
EXCELで日付を比べ3か月以内の...
-
プルダウンに【なし、平均、デ...
-
エクセルのマクロで別のシート...
-
エクセルの時刻のカウントが出...
-
平均変化率の信頼区間
-
エクセル 複数行ある同一商品...
-
エクセルの集計方法を教えて下さい
-
エクセル関数のSUMPRODUCTにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
平均変化率の信頼区間
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
時間の重複チェック
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
列と行の名前(重複あり)が交...
おすすめ情報