Davidは、セルの範囲に表示されるアスタリスクの数を数える必要があります。彼は、COUNTIFは*がワイルドカード文字であると想定しているように見えるため、適切なカウントを返さないと述べています。

実際に何を取得したいかに基づいて、結果を取得する方法はいくつかあります。セルA3:A8に次の値があると仮定します。

1234 abcd abcd abcd

これらの6つのセルには、合計7つのアスタリスクがあります。範囲内に表示されるアスタリスクの数を決定するには、次のような配列数式を使用する必要があります。

=SUM(LEN(A3:A8)-LEN(SUBSTITUTE(A3:A8,"*","")))

Ctrl + Shift + Enterで数式を入力することを忘れないでください。

もちろん、実際のアスタリスクの数ではなく、単一のアスタリスクを含む範囲内のセルの数をカウントすることもできます。この場合、数式を組み合わせる方法を知っていれば、実際にCOUNTIF関数を使用できます。まず、次の式を試してください:

=COUNTIF(A3:A8,"*")

このヒントの冒頭に示したデータを使用すると、この数式は値5を返します。もちろんこれは間違っています。この結果が返される理由は、COUNTIFが「セル内の任意のテキスト」を意味するワイルドカードとして*を使用しているためです。範囲内にテキスト(数値以外の値)を含むセルが5つあるため、これが数式によって返される答えです。

アスタリスク自体ではなく、アスタリスクのANSI文字を検索すると、正しい結果が得られると思うかもしれません。この式は、このアプローチを示しています。

=COUNTIF(A3:A8,CHAR(42))

この式も間違った答えを返します(5)。 Excelでは、*の検索とCHAR(42)の検索の間にアプリケーションの違いは見られないようです。どちらも引き続きワイルドカードとして扱われます。

これに対する解決策は、次のように、Excelにチルダ、文字を前に付けることで、アスタリスクを実際の文字として扱うように強制できることを覚えておくことです。

=COUNTIF(A3:A8,"~*")

これは1の結果を返しますが、これは驚くべきことかもしれません。ただし、Excelは非常に文字通りであり、数式では、単一のアスタリスクを含むすべてのセルの数を求められました。正解は、1つのセル(A7)にのみ要求したものが含まれているということです。セル内のどこかにアスタリスクを含むすべてのセルをカウントする場合は、次のように数式をワイルドカード文字で囲む必要があります。

=COUNTIF(A3:A8,"~*")

これにより、「任意のテキスト」、リテラルのアスタリスク、「任意のテキスト」が返されます。結果は4です。これは、少なくとも1つのアスタリスクを含むセルの数です。

チルダを使用してワイルドカードを打ち消すという概念は、このナレッジベースの記事で説明されています:

http://support.microsoft.com/kb/214138

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

このヒント(9482)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。