2

2 つの列があり、それらは隣接しており、2 つの列を連結した結果の値の一意のカウントを取得し、それらを列 A の値で関連付ける必要があります。次に例を示します。

ColA ColB
A    X
A    X
B    Y
B    Y
B    Z
C    X
C    Y
C    Z

A のカウント: 1
B のカウント: 2
C のカウント: 3

両方の列を含む 1 つのリスト、またはそれぞれ 1 つの列の 2 つの名前付きリストのいずれかの名前付きリストを介してそれらを関連付けたいと思います。配列関数を使用したくないので、このカウント関数を合計値として使用したいと思います。vba とカスタム関数を使用しても問題ありません。列には空白の値はなく、常にデータがあります。エラー チェックが必要になるとは思いません。

編集
ColA と ColB を含む NamedList で個別の順列の数を取得できます。NamedList:ColA == 'A' かどうかをテストする IF ステートメントを生成することはできません。ColA には 3 つの異なる値しかなく、A、B、C を個別にテストする 3 つの異なる関数を生成しても問題ありません。以下は、上記の NamedList の個別の順列の数を示しており、これは 6 に相当します。

=SUMPRODUCT((NamedList<>"")/COUNTIF(NamedList,NamedList&""))
4

1 に答える 1

0

SUMPRODUCT関数COUNTIF 関数を使用して一意のカウントを取得するかなり標準的な方法があります。これは、 COUNTIFS 関数の COUNTIF を交換することにより、複数の列に対する一意に適合させることができます。

        一意のカウント 2 列

E4 の式は、

=SUMPRODUCT((A$2:A$99=$D4)/(COUNTIFS(A$2:A$99, A$2:A$99&"", B$2:B$99, B$2:B$99&"")+(A$2:A$99<>$D4)))

上記の式をNamed Rangeに適合させるには、 INDEX 関数を使用して、2 次元のセル範囲から列を取り出します。

=SUMPRODUCT((INDEX(NamedList, 0, 1)=$D4)/(COUNTIFS(INDEX(NamedList, 0, 1), INDEX(NamedList, 0, 1)&"", INDEX(NamedList, 0, 2), INDEX(NamedList, 0, 2)&"")+(INDEX(NamedList, 0, 1)<>$D4)))

必要に応じて入力してください。

これらのいずれかを設計する際の最大の障害は、#DIV/0!エラーを回避することです。これは、追加された空の文字列と分母の逆の基準によって防止されます。

于 2015-04-30T21:56:52.423 に答える