2017-07-20 30 views
0

Excelテーブルに異なる文字列が表示される回数のカウントを生成しようとしています。例えば、テーブルは、現在SHEET1で、このようになります:一意の値を持つCOUNTIFS Excel

Example table 1

私はZA」のためにどのように多くのエントリ、私は表1の左側に各文字のために、指示したい、別のスプレッドシート内の別のテーブルを持っています"、" zc "または" zd "が右側に表示されます。しかし、私はそれぞれのエントリを1つだけ考慮したいと思います。私は仕事をするSUMCOUNTIFSの組み合わせを使用しています現時点では

Example Table 2

最終的な結果は、Sheet2のの列Bに、このようなものでなければならないであろう。

=SUM(COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"})) 

式が意図されているもののいくつかをやっている: は具体的には、例に適用、私は次の式を使用しています。ただし、各エントリは1回だけカウントされません。代わりに、左にある各文字について、「za」、「zc」または「zd」のすべての入力がカウントされています。

Example Table 3

は、どのように私はそれが私が意図しないものをするように式を変更することができます。以下のように式が返すの表はありますか?

ありがとうございます。

答えて

1

私の最初に考えたのは次のようになります。

=SUM(MIN (1,COUNTIFS(Sheet1!A1:A18,Sheet2!$A1,Sheet1!B1:B18,{"za","zc","zd"})) 

が、MINは、結果のCOUNTIFS配列に適切に適用される場合は、私がテストできるところ私はしませんよ。 ;-)

EDITED:MIN関数は、COUNTIFS配列内の項目のうち、最小値ではなく、最小値ではなく、少なくとも1つまたはすべての項目を取っています。これは私が恐れていたものです。

=MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"za"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zc"),1)+MIN(COUNTIFS(Sheet1!A$1:A$18,Sheet2!$A1,Sheet1!B$1:B$18,"zd"),1) 

が得られます。ちょっと厄介ですが、配列式よりも簡単です。あなたは配列数式をしたい場合は、使用することができます。

=SUM(FREQUENCY(IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),""),IFERROR(MATCH({"za","zc","zd"},(IF(Sheet1!$A$1:$A$18=$A5,Sheet1!$B$1:$B$18)),0),""))) 

これは、一連の値を取り、値の別のセットで多くの項目は、データ範囲のそれぞれに収まるかを確認するためにFREQUENCY関数を使用しています。数値の代わりにテキストが必要なので、MATCH関数を使用してリスト内で値が最初に見つかったかどうかを調べ、IFERROR関数を使って ""を返します。 (最初に出現するのは、出現回数がわからないためです)。テキストなので、FREQUENCYの両方の引数に同じ入力を使用します。

したがって、検索する値または検索する範囲を変更する必要がある場合は、両方を変更してください。あるいは、F1:F3のように値をリストアップして、A1:A18の別名とB1:B18の名前の範囲を指定することもできます。数式は次のようになります。

=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""))) 

名前付き範囲の定義を変更するだけで、数式が更新される必要があります。 :-)

注:これは配列式なので、EnterキーではなくCTRL + SHIFT + ENTERを押してセルから閉じる必要があります。数式バーを見ると、

{=SUM(FREQUENCY(IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),""),IFERROR(MATCH(SearchValues,(IF(colA=$A2,colB)),0),"")))} 

自分で中括弧を入力することはできません。 ;-)

+0

おかげで多くのことを。私はあなたの提案を試みましたが、それはただ0を返すだけです。 – franciscofcosta

+0

私はデータと公式をテストし、私の答えを更新しました。 :-) –

+0

ありがとうございました。 Arrayの式ではできませんでしたが、MINを使用していました。ありがとうございました。 – franciscofcosta

1

あなたはB1で、この式を使用して、フィルダウンすることができます助けを

B1: 
=SUMPRODUCT(((Sheet1!$A$1:$A$18=A1)*(Sheet1!$B$1:$B$18= {"za","zc","zd"}))/ 
    COUNTIFS(Sheet1!$A$1:$A$18,Sheet1!$A$1:$A$18,Sheet1!$B$1:$B$18,Sheet1!$B$1:$B$18)) 

enter image description here

+0

ご協力いただきありがとうございます – franciscofcosta

関連する問題