ビルには、昇順でソートされた番号の列があります。列内に重複する値が多数ありますが、これは問題ありません。ただし、重複していない列の番号の最初のインスタンスを見つける必要があります。ビルは、列の最初の単一発生値を識別できる式があるかどうか疑問に思います。

望まれる答えを見つける方法はたくさんあります。 1つの方法は、番号の右側にヘルパー列を追加することです。最初の番号がセルA2にあるとすると、セルB2に次のように入力できます。

=IF(AND(A1<>A2,A3<>A2),"single","")

数式を必要な数のセルにコピーすると、列Aに単一の値を持つ最初のセルを簡単に見つけることができます。

セルB2で次の数式を使用することもできます。

=COUNTIF($A:$A,$A2)

必要な限りコピーしてください。この数式は、列Aの値が列A内で発生する回数のカウントを示します。次に、次の数式を使用して、列Aで1回出現する最初の値を決定します。

=INDEX($A:$A,MATCH(1,$B:$B,0))

ヘルパー列が使用できない場合は、配列数式を使用できます。

これらのいずれかが、1回発生する最初の値を表示します:

=INDEX(A2:A999,MATCH(1,COUNTIF(A2:A999,A2:A999),0))

=SMALL(IF(COUNTIF(A2:A999,A2:A999)=1,A2:A999,""),1)

これらは配列数式であることに注意してください。つまり、Ctrl + Shift + Enterを使用して入力する必要があります。さらに、範囲内に単一の値がない場合、数式は#N / Aエラーを返します。

どの行に最初の単一オカレンス値が含まれているかを知りたい場合は、次の配列数式が適切に機能します。

=MATCH(1,COUNTIF(A2:A999,A2:A999),0)+1

数式はセルA2:A999をチェックすることに注意してください。行A1はスキップされるため、数式の最後に「+1」が必要です。ヘッダー行がない場合、またはデータが行2以外の行で始まる場合は、それに応じて数式を調整する必要があります。

数式を使用したくない場合は、条件付き書式を使用して、データ内の単一オカレンス値を強調表示できます。

次の手順に従ってください:

。チェックするセルを選択します。

。リボンの[ホーム]タブが表示された状態で、[スタイル]グループの[条件付き書式]オプションをクリックします。 Excelは、条件付き書式に関連するオプションのパレットを表示します。

。ハイライトセルルールを選択します。 Excelにはさらに多くのオプションが表示されます。

。重複する値を選択します。 Excelに[値の複製]ダイアログボックスが表示されます。 (図1を参照)

。ダイアログボックスの左側にあるドロップダウンリストを使用して、[一意]を選択します。

。ダイアログボックスの左側にあるドロップダウンリストを使用して、単一オカレンス値をどのようにフォーマットするかを指定します。

。 [OK]をクリックします。

この時点で、単一オカレンス値はステップ6で指定したようにフォーマットされ、簡単に見つけることができます。単一オカレンス値のみを表示する場合は、条件付き形式を適用した後、フィルタリングを使用してタスクを実行できます。

マクロアプローチを好む場合は、次のようなマクロを使用できます。

Sub FirstUnique()

Dim c As Range     Dim sMsg As String     Dim bLone As Boolean

If Selection.Cells.Count > 1 Then         For Each c In Selection.Cells             bLone = False             If c.Row = 1 Then                 If c <> c.Offset(1, 0) Then bLone = True             Else                 If c <> c.Offset(-1, 0) And _                    c <> c.Offset(1, 0) Then bLone = True             End If             If bLone Then                 sMsg = "First single-occurrence value found "

sMsg = sMsg & "at " & c.Address & vbCrLf                 sMsg = sMsg & "Value: " & c                 MsgBox sMsg                 Exit For             End If         Next c     Else         sMsg = "You must select at least 2 cells."

MsgBox sMsg     End If End Sub

マクロを使用するには、チェックするセルを選択して実行します。マクロは、選択した最初の単一オカレンス値のアドレスと値を表示します。

このヒントで提供されているすべてのソリューション(条件付き書式設定アプローチを除く)では、ビルが言ったように、評価される値を並べ替える必要があることに注意してください。値が並べ替えられていない場合は、最初に値を並べ替えるか、結果に対してまったく異なるアプローチを検討する必要があります。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3383)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。