
●質問:
Excelの表に記入された入力値に誤りが無いか、フィルタ機能で確認を試みています。
添付の画像のように入力されており、日付や名前はうまくフィルタ出来たのですが、「現場コード」(数値)がどうしてもうまくフィルタ出来ません。
桁数が多い、桁数が少ない、極端に数値が大きいor小さい、入力忘れ(空欄)など、明らかに入力ミスである項目を見つけるため、今までは「5?????」に等しくない値をフィルタしていました。
例では、4行目と6行目が引っかかることになりますが、どのようにすればフィルタ出来るでしょうか?
●経緯:
何故か今まではこの現場コードの欄が文字列になっているExcelデータが回ってきていたのですが、最近この現場コード欄が数値の状態のExcelが回ってくるようになり、それ以来「5?????」ではフィルタ出来なくなりました。(「等しくない」にすると、全行表示されたままです。)
そもそも、フィルタする際に[▼]ボタンを押したとき、[テキストフィルター]ではなく [数値フィルター]と言う項目があるのが原因ではないかと思います。
ネットで調べてみると、隣のセルに「=""&C2」のような式を入れてオートフィルし、その式を入力した列をフィルタすると言う方法はありましたが、現場コード欄が文字列で届いていたときはそのままフィルタ出来たのが不可解です。
C列の [セルの書式設定] にて、分類を「文字列」にしても、上述のフィルタに引っかかりません。
フィルタの[▼]ボタンを押した後に「5?????」を検索すれば該当行を導き出すことはできますが、試しにこの動作をマクロ記録機能にかけてみると、下記のように、検索で出てきた結果の値を直接指定したことになっています。
ActiveSheet.Range("$A$1:$C$6").AutoFilter Field:=3, Criteria1:=Array( _
"512013", "513572", "513842"), Operator:=xlFilterValues
最終的に、このフィルタの動作をマクロに組み込むことも考えているため、どのようにフィルタしようか判断に困っています。
どのような操作でフィルタをかければ、該当行(4行目と6行目)を見つけ出せるでしょうか?
●利用環境:
OS:Windows7
Excel2010
*画像の表は例です。記入している数値は実際に業務で使用したものではありません。

No.1ベストアンサー
- 回答日時:
数値で「記入されている」データは、テキストフィルタではなく数値フィルタがかかります。
セルの書式設定を文字列にしても、データとしてはまだ「文字列で記入されてはいない」ので、出来ません。
言い換えると、送られてきたデータを「文字列のデータとして入れなおす」ことで、従前のやり方でできるようになります。
手順:
データ列を選択する
データタブの「区切り位置」を開始する
特に何も触らずに次々送り、3/3画面で「文字列」にマークしてOKする
あとは以前のやり方ができるようになります。
マクロを使えるなら、以上の動作をマクロにして運用しても勿論構いません。
#別の考え方
別列に
=LEFT(C2)
以下コピー
のように抽出する(という動作をマクロで行う)ことで、フィルタする方法もありますね。
実際にやってみれば判りますが、数値でも文字列でも問いません。
No.3
- 回答日時:
>最近この現場コード欄が数値の状態のExcelが回ってくるようになり、それ以来「5?????」ではフィルタ出来なくなりました
数値なら
数値フィルター ,ユーザー設定フィルターを選択して、
添付図のように設定すれば、4行目と6行目がフィルターされます。
なお、質問は、現場コード「500000 」以外のみフィルター例ですが
もし 「500000~699999」以外のフィルターなら
1.条件を 500000より小さい OR 699999より大きい
で一旦コード間違いをフィルターし、つづいて
2.条件を スペース に等しい
で入力漏れをフィルターする
の2段階で検証する必要があると思います。

No.2
- 回答日時:
>そもそも、フィルタする際に[▼]ボタンを押したとき、[テキストフィルター]ではなく [数値フィルター]と言う項目があるのが原因ではないかと思います。
そうです。
対象の列に文字列と数値が混在するときは数値セルの数が文字セルの数より多くなると[数値フィルター]となります。
また、[数値フィルター]の場合は空欄が対象外になりますので質問の要件を満たすには現場コードを全て文字列に変換することをお勧めします。
回答No.1で提言されている「データ」タブの「区切り位置」で文字列に変換する方法が最善かと思われます。
>C列の [セルの書式設定] にて、分類を「文字列」にしても、上述のフィルタに引っかかりません。
[セルの書式設定]の「表示形式」は数値に対する表示をどのようにするかを定義するもので数値として入力された値は表示形式を「文字列」に変更してもデータは数値のままで文字列にはなりません。
但し、表示形式を「文字列」に指定したセルへ数字のみ(数値と混合しないこと)を入力したときは文字列のデータになり表示形式を「標準」または「数値」、「通貨」等に変更しても数値にはなりません。
> 対象の列に文字列と数値が混在するときは数値セルの数が文字セルの数より多くなると[数値フィルター]となります。
この部分、MS社のコミュニティですらはっきりと回答が出ていなかったので、貴重な情報をいただきました。
数値と文字の扱いがどうも思った通りに行かないと思ったらそういう事だったんですね。このあたりの仕様にやられてしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) エクセルでフィルタ後、考えている場所に値コピーができない。 1 2022/05/02 21:01
- Excel(エクセル) Excelのセル上の日付の不具合 3 2022/05/22 18:20
- Visual Basic(VBA) エクセルVBAコピー 2 2022/06/08 21:45
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルのフィルターを複数シートに連動させたいです。 エクセルファイルに15シートあります。 そのう 2 2022/05/01 21:47
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) スプレッドシートのチェックボックスとフィルタを連携させたい 2 2022/09/26 18:02
このQ&Aを見た人はこんなQ&Aも見ています
-
EXCELマクロでワイルドカードを使ったオートフィルタ処理の方法がわからない
Excel(エクセル)
-
マクロ オートフィルタの検索値を所定のセルから参照
Excel(エクセル)
-
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
-
4
エクセル フィルタ 数値のみ抽出したい
Excel(エクセル)
-
5
vba フィルター 複数条件 3つ以上 完全一致除外
Visual Basic(VBA)
-
6
B列の最終行までA列をオートフィル
Visual Basic(VBA)
-
7
Excelオートフィルタで複数のセルの値を参照して抽出したい
Excel(エクセル)
-
8
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
11
VBAで文字列を数値に変換したい
Excel(エクセル)
-
12
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
13
Excelで列の上4桁のみ抽出させたい。
Excel(エクセル)
-
14
エクセルで、桁数の異なるデータ(整数)を抜きたしたいのですが?
その他(パソコン・スマホ・電化製品)
-
15
Excel VBAでオートフィルタで抽出した列データを別シートの最終行にコピーするには
Visual Basic(VBA)
-
16
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
17
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
18
vbaでworksheetfunctionでの複数関数がエラーになります
Visual Basic(VBA)
-
19
VBAについてです。 初心者です。 Resize(.Rows.Count -1)のカッコ内の最初の「
Visual Basic(VBA)
-
20
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
特定のセルだけ結果がおかしい...
-
エクセル
-
エクセルのdatedif関数を使って...
-
【マクロ】アクティブセルの時...
-
【関数】同じ関数なのに、エラ...
-
エクセルの循環参照、?
-
【マクロ】A列にある、日付(本...
-
【マクロ】3行に上から下に並...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】WEBシステムから保存...
-
iPhoneのExcelアプリで、別のシ...
-
【エクセル】期限アラートについて
-
Excelファイルを開くと私だけVA...
-
Excelの新しい空白のブックを開...
-
Excelについての質問です 並べ...
-
マクロ・VBAで、当該ファイルの...
-
VBA チェックボックスをオーバ...
-
派遣会社とかハローワークとか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelファイルを開くと私だけVA...
-
エクセルについてどう関数を使...
-
マクロ・VBAで、当該ファイルの...
-
エクセルのセルに画像は埋め込...
-
エクセルで、一部のセルだけ固...
-
【マクロ、画像あり】A表かB表...
-
エクセルでカウントする
-
【マクロ】コードを少しでも、...
-
VBA_日時のソート
-
エクセルで教えてください。 例...
-
エクセル 月間シフト表で曜日ご...
-
セルの左に余白を付ける
-
エクセル
-
エクセルについて教えてください
-
2枚のエクセル表で数字をマッチ...
-
ExcelのIF関数との組み合わせの...
-
エクセルのファイルのコピーを...
-
エクセルで二つのブックの違い...
-
空白処理を空白に
-
Excelのチェックボックスについ...
おすすめ情報