グラハムは、Excelで、彼のリーグのプレーヤー名のマトリックスを作成しました。

セルB2:H2には、セルA3:A9と同様に、プレーヤーの名前が含まれています。マトリックスの各交差点に、グラハムは「W」または「L」を配置して、対戦が各行のプレーヤーに勝ち負けをもたらしたかどうかを示します。プレーヤーが他の人を複数回プレイする場合、セルには各ゲームの「W」または「L」が含まれます。グラハムは、列Iから始めて、各プレーヤーの数または勝ち負けを示すためにどの式を使用できるのか疑問に思っていました。

必要な情報を取得する方法はいくつかあります。 1つは、次のタイプの式を使用することです。

=LEN(SUBSTITUTE(B3&C3&D3&E3&F3&G3&H3,"L",""))

この式は、行3の非L文字の数、つまり勝ちの数を計算します。これは、B3:H3の内容を連結し、SUBSTITUTE関数を使用してすべてのLを削除することによって行われます。これにより、LEN関数によってカウントされるWが残ります。同じ結果を得るために、次の方法でCONCATENATE関数を使用することもできます。

=LEN(SUBSTITUTE(CONCATENATE(B3,C3,D3,E3,F3,G3,H3),"L",""))

損失数を計算するには、各式の「L」を「W」に置き換えるだけです。

配列数式を使用することもできます。これにより、すべてのセルを指定する必要はなく、調べるセルの範囲を指定できます。

=SUM(LEN(SUBSTITUTE(B3:H3, "L","")))

Shift + Ctrl + Enterを押して入力したこの配列数式は、B3:H3の範囲の勝ち数(W文字)を返します。

最後に、ユーザー定義関数を使用して、特定の範囲内の特定の文字の出現を返すことができます。次のマクロでうまくいきます:

Function CharNums(r, chr) As Integer     Dim c As Range     Dim strX As String     Dim J As Integer

Application.Volatile     CharNums = 0     For Each c In r.Cells         strX = c.Value         For J = 1 To Len(strX)

If Mid(strX, J, 1) = chr Then CharNums = CharNums + 1         Next J     Next c End Function

この関数を使用するには、ワークシートで次のような数式を使用します。

=CharNums(B3:H3;"W")

この関数は、範囲内の大文字のW文字の数を返します。

他のすべての文字(小文字のw文字を含む)は無視されます。損失をカウントするには、式のWをLに置き換えるだけです。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

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

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