• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル・オートフィルタについて)

エクセル・オートフィルタの使い方についての質問

このQ&Aのポイント
  • エクセルでオートフィルタの使い方がうまくいかない状況です。以前はオートフィルタの逆三角を開いてデータを確認していたのですが、最近は選択が一番上のデータに戻ってしまい、どこまで確認したかがわかりません。
  • データ自体が似たような数字の一覧なので、一番上のデータに戻ってしまうことがあります。以前のように一つずつ下がっていく方法で全てを確認したいです。
  • Windows XPとExcel 2003を使用しています。どのようにすれば以前の状態に戻すことができるでしょうか?PC初心者なので、わかりやすい説明をお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.4

ANo.1です。 > 実際やってみたのですが、2以上を削除したところ > 2000行近くあったものが22行になってしまいました。 オートフィルタでC列が2以上の物を表示したとき、表示されたのは確かに重複したデータでしたか? 重複したデータでなければ、C列の式が正しくないか、オートフィルタの条件が正しくない可能性があります。

nimoooo
質問者

お礼

何度もご回答ありがとうございます。 今月は時間もぎりぎりになってしまったため、 結局一つ一つチェックする方法で作業を終えました。 来月また同じ作業を進める予定ですので 今回教えていただいた数式の中で、何か間違っていたのか、 データを見比べながら試していきたいと思います。 ありがとうございました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.3です! チェックが目的というコトですので・・・ 余計なお世話かもしれませんが、マクロを二つ用意してみました。 操作方法は前回同様ですが、「チェック」のマクロで重複分は薄い黄色にするようにしています。 確認できたら「削除」のマクロを実行すると重複分が削除されます。 前回同様1行目はタイトル行でデータは2行目以降にあるとします。 (A列データでの重複としています) Sub チェック() 'この行から Dim i, j, k, L As Long Application.ScreenUpdating = False Cells.Interior.ColorIndex = xlNone L = Cells(Rows.Count, 1).End(xlUp).Row j = Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To L If WorksheetFunction.CountIf(Range(Cells(2, 1), Cells(i, 1)), Cells(i, 1)) > 1 Then Range(Cells(i, 1), Cells(i, j)).Interior.ColorIndex = 36 k = k + 1 End If Next i Application.ScreenUpdating = True MsgBox "全" & L - 1 & "データ中" & vbCrLf & k & "個が重複しています。" End Sub Sub 削除() Dim i As Long Application.ScreenUpdating = False Cells.Interior.ColorIndex = xlNone For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(Range(Cells(2, 1), Cells(i, 1)), Cells(i, 1)) > 1 Then Rows(i).Delete End If Next i Application.ScreenUpdating = True End Sub 'この行まで 今回もご希望の方法と違うかもしれませんが・・・ 参考程度でやってみてください。m(_ _)m

nimoooo
質問者

お礼

何度もご回答ありがとうございます。 今月は時間もぎりぎりになってしまったため、 結局一つ一つチェックする方法で作業を終えました。 来月また同じ作業を進める予定ですので 今回教えていただいたマクロの仕様を試したいと思います。 ありがとうございました。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 横からおじゃまします。 最終的に重複データを削除したい!というコトですよね? オートフィルタではなく、VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、 ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) ※ 1行目はタイトル行でデータは2行目からあるとします。 ※ 検索列をA列としてみました。(A列で重複するものがあれば削除) Sub test() 'この行から Dim i As Long Application.ScreenUpdating = False For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 If WorksheetFunction.CountIf(Range("A2:A" & i), Range("A" & i)) > 1 Then Rows(i).Delete (xlUp) End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ 重複を検索する列が仮にB列であれば > For i = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 >If WorksheetFunction.CountIf(Range("A2:A" & i), Range("A" & i)) > 1 Then の2行を >For i = Cells(Rows.Count, "B").End(xlUp).Row To 2 Step -1 >If WorksheetFunction.CountIf(Range("B2:A" & i), Range("B" & i)) > 1 Then のように「A」の部分を「B」に変更してください。 ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。 ご希望の方法でなかったらごめんなさいね。m(_ _)m

nimoooo
質問者

お礼

最終的にはダブっている箇所を削除するのですが、 ダブっている箇所をチェックしたい。というのもあるので、今回の作業には適さないようです。 ただ、すごく便利です! 以前チャレンジした際に初心者ということもあり、すごく時間がかかって難しく、 結局思ったとおりにできなかったという過去があったので 教えていただいたマクロを入れたら、あっさり最終作業のところまで飛んだのが すばらしかったです。 ありがとうございました!

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

> 作業的に抽出した後にダブっている行があった場合、一つを残して、他の行を削除するというところまでやっています じゃあ、C2に↓の式をいれて下にコピー =IF(A2="","",COUNTIF(A$2:A2,A2)) 1.オートフィルタでC列が2以上の物を表示。 2.表示された行は重複している2つ目以降の行なので、表示されている行を削除。 3.フィルタ解除。 とにかく、今のやり方は効率が悪いです。

nimoooo
質問者

お礼

何度も回答ありがとうございます。 実際やってみたのですが、2以上を削除したところ 2000行近くあったものが22行になってしまいました。 通常は800行ほど残らなくてはいけないのですが… 質問ばかりで申し訳ありませんが、なぜでしょうか?

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

直接の回答ではありませんが…… オートフィルタで1つづつ重複がないかを見るのはかなり無駄です。 作業列を1列追加して、重複しているものだけ表示させるようしてはいかがでしょう。添付の図の例ですと、C2セルに↓と、入れて下にコピーしてあります。 =IF(A2="","",COUNTIF(A:A,A2)) あとはオートフィルタでC列が2以上の物だけを表示すれば重複を抽出できますよ。

nimoooo
質問者

お礼

言葉が足らずに申し訳ありません。 作業的に抽出した後にダブっている行があった場合、一つを残して、他の行を削除するというところまでやっています。 ほぼ、ダブっているので、ひとつひとつ上から順に見ていくのが わかりやすくてベストなのですが・・・。 相変わらずデータの一番上に自動的に戻ってまい・・。本日はあきらめることにしました。

関連するQ&A