web-dev-qa-db-ja.com

Excelで異なるフォントの色のテキストをカウントアップする方法

別のデータベースからExcelにエクスポートされた名前のリストがあります。関心のあるリスト内の名前は、赤いフォントで強調表示されています。それを数える方法が欲しいのですが、ジョン・スミスは列に合計5回表示されますが、5回のうち3回は、彼の名前が赤いフォントで強調表示されます。それで、彼の名前のインスタンスがいくつ赤く表示されるかを確認したいと思います。

私は彼の名前のすべてのインスタンスを検索する方法を知っています。 = COUNTIF(A1:A100、 "ジョンスミス")

また、これを使用して、ワークシート内の赤(= SumRed)(カラーインデックスが指定された後)のすべての値をカウントするVB関数を作成するのに役立ちました:

Function SumRed(MyRange As Range)
    SumRed = 0
For Each cell In MyRange
    If cell.Font.Color = 255 Then
        SumRed = SumRed + cell.Value
    End If
Next cell
End Function

2つのカウント条件を組み合わせる方法が見つかりません。どんな助けでも大歓迎です!

8
Tony Amofah

これにはVBAは必要ありませんが、VBAソリューションが必要な場合は、他の2つの答えのいずれかを使用できます。 :)

Excelの数式を使用して、セルのフォントの色を見つけることができます。この例を参照してください。

XL4マクロを使用します。

  1. ネームマネージャーを開く
  2. 名前を付けます。 FontColorと言います
  3. この式を「=GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1))を参照」に入力し、[OK]をクリックします

enter image description here

式の説明

構文は

_GET.CELL(type_num, reference)

Type_num is a number that specifies what type of cell information you want.
reference is the cell reference
_

上記の数式で、数値_24_は、セルの最初の文字のフォントの色を1〜56の範囲の数値として示します。フォントの色が自動の場合、0を返します。したがって、欠点があります。フォント全体の色が赤であることを確認してください。 64を使用することもできましたが、正しく機能していません。

OFFSET(INDIRECT("RC",FALSE),0,-1)は、左側の直接のセルを指します。

次に、この数式をセル=IF(AND(Fontcolor=3,B1="John Smith"),1,0)に入力し、コピーします。

:数式は、テキストを含むセルの右側に入力する必要があります。

Screentshot

enter image description here

編集(2013年10月12日)

特定の背景色のセルをカウントするには、 [〜#〜] this [〜#〜] linkを参照してください。

16
Siddharth Rout

私はあなたがほとんどそこにいると思いますが、これは別の関数に値します@userは私をオチに賭けます:(

_Function CoundRedAndText(MyRange As Range, Mytext as string) as long
    CoundRedAndText = 0
    For Each cell In MyRange
        If cell.Font.Color = 255 and cell.value like MyText Then
            CoundRedAndText = CoundRedAndText + 1 'you had cell.value but dont know why?
        End If
    Next cell
End Function
_

使用法、=CountRedAndText(A1:A25, "John Smith")

2
glh
For Each cell In Range("A1:A100")
    If cell.Font.Color = 255 And cell.Value = "John Smith" Then
        myCount = myCount + 1
    End If
Next
0
user2140261