見つけられる?1つだけ違うセルを探せ!

Excel

Excelで大量のデータ(例えば300×300マス)を扱っていると、
「一つだけ値が違うセルがあるはずなのに、どこにあるか分からない!」

このような状況に陥ることがあります。

そこで、この記事では、そんな時に役立つ、
膨大なデータの中からたった一つだけ異なる値を持つセルを効率的に見つけ出す方法を、
Excelの標準機能からVBAまで、複数のアプローチで徹底解説します。

これらのテクニックは、データ入力ミスのチェックやデータ変換作業の効率化に繋がります。

今回のミッション

現在の状態とゴール

  • 現在の状態: Excelシートの300×300(合計90,000)のセル上の、89999セルに「d」という文字が入力されている。
    しかし、どこか1つのセルだけ、「d」ではない異なる文字(何であるかは不明)が入力されている。
  • 目指すゴール: その「d」ではない文字が入力されているセルの場所(例: CG123)と、そこに入力されている(例: f)を特定する。

データの準備

このタスクに挑戦するために、以下の準備を行います。

準備の方法1:サンプルファイルのダウンロード

記事で解説されている操作を実際に試すために、
サンプルファイル excel_de_himatsubushi001.xlsx (227KB)をダウンロードします。

準備の方法2:手入力で作成

1.300×300のセル範囲を選択します。

300列目ってどこ? 「列」って表記がアルファベットなので分からない!

1-1.まず、名前ボックスに「r300c300」と入力して[Enter]を押します。

要するに、「r」はROW(行)、「c」はCOLUMN(列)を表しています。
このようなセルの選択を覚えておくと便利です!

そうすると、「KN300」セルが選択されます。

300列目は「KN列」であることが分かります。

1-2.次に、[Ctrl]+[Shift]+[]KN列をすべて選択。
続いて、[Ctrl]+[Shift]+[]をすべて選択。

2.選択したセル範囲すべてに「d」を入力します。

2-1.300×300のセル範囲が選択されている状態で、「d」と入力します。

2-2.[Ctrl]+[Enter]を押すと、選択範囲すべてに「d」が入力されます。

3.最後に、好きな場所に「d」以外の文字を入力します。準備完了です!

方法1(Excel標準機能:検索)

検索機能(ワイルドカード)

Excelに標準で備わっている「検索」機能を使用する方法です。

考えかた

まず、大多数を占める「d」という文字を、「検索」機能を使ってすべてクリアします。

そうすると、唯一異なる文字が入力されていたセルだけが残ります。

最後に、その残ったセルを「検索」機能(ワイルドカードを使用)で見つけ出します。

手順

① はじめに、データが入力されている範囲内の任意のセルを選択し、
[Ctrl]+[F]を押し、「検索と置換」ダイアログを開きます。

(または、「ホーム」タブ > 「検索と選択」 > 「検索」を選択)

② 次に、「検索する文字列」のボックスに「d」と入力します

③ 続いて、その画面の右下、「オプション」ボタンをクリックし、詳細設定を開きます。

  • 「大文字と小文字を区別する」
  • 「セル内容が完全に同一であるものを検索する」
  • 「半角と全角を区別する」

の3つのチェックボックスすべてにチェックを入れます。

④ そして、「すべて検索」ボタンをクリックします。
下の図のように検索された一覧を、[Ctrl]+[A]ですべて選択します。

すると、「d」のセルがすべて選択されます。

⑤ 「検索と置換」ダイアログを閉じたら、[Delete]を押し「d」をクリアします。

※処理が重く、うまくいかない場合は、
置換」機能を使い、「d」を(空白)に置換します。

⑥ もう一度、[Ctrl]+[F]を押し、「検索と置換」ダイアログを開き、「検索」タブを選択します。

続いて、「検索する文字列」のボックスに*(アスタリスク、半角)を入力します。

最後に「すべて検索」ボタンをクリックします。

解説

  • チェックボック:
    • 「大文字と小文字を区別する」:「D」と「d」を区別します。
    • 「セル内容が完全に同一であるものを検索する」:「ad」や「dc」など、「d」を含むが完全には一致しないセルを除外します。
    • 「半角と全角を区別する」:「」(全角)と「d」(半角)を区別します。
    • これらすべてにチェックを入れることで、半角小文字の「d」という文字だけが入力されているセルのみを正確に検索対象とします。
  • ワイルドカード「*」:
    • *」は、Excelの検索機能において「任意の0文字以上の文字列」を表すワイルドカードです。
    • 手順⑥で「d」をすべてクリアしたため、「*」で検索すると、唯一空白にならなかった(=異なる文字が入っていた)セルが見つかります。

メリット&デメリット

  • メリット:
    • Excelの基本的な機能だけで完結するため、特別な知識(関数やVBA)が不要
    • 手順が比較的わかりやすい。
  • デメリット:
    • 大量のデータを変更するため、PCのスペックによっては処理に時間がかかる場合がある。
    • 元のデータが変わってしまう。

方法2(Excel標準機能:ジャンプ)

アクティブ行との相違

Excelの「ジャンプ」機能の中にある「選択オプション」を利用する方法です。

考えかた

まず、データ範囲を選択、「ジャンプ」の「アクティブ行との相違」で、アクティブセル行と異なる値のセルを抽出します。

今回は大半が「d」なので、それ以外のセルが選択されます。

手順

① まず、データ範囲の先頭セル「A1」を選択します。

② 次に、[Ctrl]+[A]を押して、データが入力されている範囲(A1:KN300)すべてを選択します。

③ 続いて、[F5]キーまたは[Ctrl]+[G]を押して、「ジャンプ」ダイアログを開きます。
(または、「ホーム」タブ > 「検索と選択」 > 「ジャンプ」を選択)

④ 開いたら、左下の「セル選択」ボタンをクリックします。

⑤ 「選択オプション」ダイアログが表示されたら、「アクティブ行との相違」を選択します。

最後に「OK」ボタンをクリックします。

解説

  • アクティブ行との相違: この機能は、アクティブセルが含まれる「行」を基準とし、その行内の他のセルと比較して値が異なるセルを選択します。
    実行後、異なる値を持つセル(今回は「FE212」の「q」)が選択された状態になります。

メリット&デメリット

  • メリット:
    • 数回のクリック操作で完了するため、非常に手早く実行できる。
    • 元のデータを変更しない。
  • デメリット:
    • アクティブ行との相違」という機能名から、直感的に動作を理解しにくい。
    • データの配置や内容によっては、意図しないセルが選択される可能性も考えられる。
      (今回はほぼ均一なデータなので問題なく動作する可能性が高い)

方法3(Excel標準機能:条件付き書式)

※非推奨 処理がかなり重くなります

一意の値

セルの値に応じて書式(背景色、文字色など)を自動的に変更する「条件付き書式」機能を利用する方法です。

考えかた

データ範囲全体に対して、「重複する値」のルールを適用し、
その中で「一意」(重複していない)の値を持つセルだけを強調表示させます。

90,000個のセルのうち89,999個が「d」で重複しているため、
唯一異なる値を持つセルだけが「一意」の値としてハイライトされます。

手順

① まず、データ範囲の先頭セル「A1」を選択します。

② 次に、[Ctrl]+[A]を押して、データが入力されている範囲(A1:KN300)すべてを選択します。

③ 続いて、「ホーム」タブ > 「条件付き書式」> 「セルの強調表示ルール」> 「重複する値」を選択します。

④ ダイアログが表示されたら、左側のドロップダウンリストを「重複」から「一意」に変更します。

⑤ 右側の「書式」から、適用したい書式を選択します。

⑥ 最後に「OK」ボタンをクリックします。

解説

  • 一意の値: 選択範囲内で、他に同じ値が存在しないセルを指します。
    この設定により、異なる値を持つセル(例:FE212の「q」)の背景色などが変わり、
    視覚的に見つけやすくなります。
  • 非推奨である理由: 90,000個という大量のセルに条件付き書式を適用すると、
    Excelの計算処理に大きな負荷がかかり、動作が著しく遅くなる可能性があります。
    また、セルがハイライトされても、
    そのセルを見つけるためにはシートをスクロールして探す手間が発生します。

メリット&デメリット

  • メリット:
    • 異なるセルを視覚的に(色などで)区別できる。
    • 設定自体は容易。
  • デメリット:
    • 処理が非常に重くなる可能性が極めて高く、実用的でない場合が多い。
    • 色が変わったセルを目視で探す必要がある。

方法4(VBA)

For Eachループ, For Nextループ, 配列

Excelの機能を自動化できるVBAVisual Basic for Applications)を使用する方法です。

考えかた

VBAプログラムを作成し、指定した範囲(A1からKN300まで)のセルを一つずつ順番に調べます。

セルの値が「d」でなければ、そのセルのアドレスと値をメッセージボックスに表示してプログラムを終了させます。

異なるセルは1つしかないと分かっているので、
見つかった時点で処理を終わりにすることで効率化します。

手順

① まず、[Alt]+[F11]キーを押して、VBEVisual Basic Editor)を開きます。

② 次に、VBEのメニューバーから「挿入」>「標準モジュール」を選択します。

右側に表示される大きな空白のウィンドウ(コードウィンドウ)に、
以下のいずれかのサンプルコードをコピー&ペーストします。

(基本的なFor Eachループ)

Sub himatsubushi001()

    Dim r As Range

    'A1セルを含む連続したセル範囲内の各セルを順番に処理
    For Each r In Range("A1").CurrentRegion

        'セルの値が"d"ではないとき
        If r.Value <> "d" Then

            'セルのアドレスと値をメッセージボックスで表示
            MsgBox r.Address & "  " & r.Value

            Exit Sub
        End If
    Next r
End Sub

②(For Nextループで行・列を指定)

Sub himatsubushi002()

    Dim i As Long, j As Long
    
    For i = 1 To 300
        For j = 1 To 300

            If Cells(i, j).Value <> "d" Then
                MsgBox Cells(i, j).Address & "  " & Cells(i, j).Value
                
                Exit Sub
            End If
        Next j
    Next i
End Sub

③(配列を使って高速化)

Sub himatsubushi003()

    Dim ary As Variant, i As Long, j As Long

    'データを配列に格納
    ary = Range("A1:KN300").Value

    '配列内で処理をする
    For i = 1 To 300
        For j = 1 To 300

            If ary(i, j) <> "d" Then
                MsgBox Cells(i, j).Address & "  " & ary(i, j)
                
                Exit Sub
            End If
        Next j
    Next i
End Sub

③ コードを貼り付けたら、VBEのメニューバーの下にある実行ボタン(緑色の右向き三角アイコン)をクリックするか、[F5]キーを押します。

マクロが実行され、異なるセルが見つかるとメッセージボックスが表示されます。
(例: $FE$212 q」)

解説

  • 例1: For Eachループは、指定した範囲内のセルを順番に処理するシンプルな方法です。
  • 例2: For Nextループは、行番号列番号をカウンター変数(i, j)で指定してセルを処理します。
  • 例3: データを一度VBA内の「配列」という変数にまとめて格納してから処理します。
    配列内での処理は、Excelシート上のセルに直接アクセスするよりもかなり高速です。
    今回のような量のセルを扱う場合に最も効率的な方法です。
  • マクロの有効化: Excelのセキュリティ設定によっては、マクロの実行がブロックされる場合があります。その場合は、ファイルを開く際に表示されるセキュリティ警告で「コンテンツの有効化」をクリックするか、Excelのオプションでマクロの設定を変更する必要があります。

メリット&デメリット

  • メリット:
    • 処理速度が非常に速い(特に配列を使用する方法)。
    • 一度コードを作成すれば、ボタン一つで何度でも同じ処理を実行できる。
    • 複雑な条件や処理も自動化できる。
  • デメリット:
    • VBAの基本的な知識(VBEの開き方、コードの貼り付け方、実行方法など)が必要。
    • コードの記述ミスがあると、エラーが発生したり、意図しない動作をしたりする可能性がある。
    • 他人にファイルを渡す場合、相手がマクロを有効にする必要がある。

まとめ

今回は、300×300マスという大量のセルの中から、たった1つだけ異なる値を持つセルを見つけ出すための4つの方法を紹介しました。

  1. Excel標準機能:検索: 基本機能だけで実行可能。
  2. Excel標準機能:ジャンプ(アクティブ行との相違): 数クリックで素早く実行できる。
  3. Excel標準機能:条件付き書式: 視覚的に見つけられるが、処理が重く非推奨。
  4. VBA: 最も高速かつ自動化に適しているが、VBAの知識が必要。

Excelには、このように様々な機能が備わっており、それらを組み合わせたり、
状況に応じて使い分けたりすることで、データ分析や確認作業を効率化できます。

特に大量のデータを扱う際には、VBAのような自動化技術が強力な武器となります。

この記事で紹介したテクニックが、皆さんのExcel作業の一助となり、スキルアップに繋がることを願っています。

タイトルとURLをコピーしました