2017-07-12 6 views
0

私は2つの列を持っています.1つは顧客ID番号ともう1つは計画数です。顧客IDには文字と数字が含まれ、プランの数はゼロでない整数です。特定のセル範囲の一意のレコード数をカウントするためのExcel関数の書き方

Iは第一の機能が必要です(例:4の対応する平面カウントを持つすべての顧客ID)、特定の計画数に対応する顧客IDの範囲を指定し

及び第二:数をカウントそのプランのカウントに対する一意の顧客IDのコラム

4 
4 
4 
4 
4 
4 
4 
4 
4 
5 
5 

が一致する

06U0547 
06U0547 
06U0547 
06U5166 
06U5166 
06U5166 
06U4990 
06U4990 
06U4990 
06U4777 
06U4777 

私はExcelがOK、のが唯一のこれら9を見てみましょう」と言いたい:4に等しい計画のすべてのカウントと、これらのIDのために例えばので

計画数が4の顧客IDを入力し、一意の数を数えます。これは3つの固有の数字になります。関数は "3"を返します。これは任意のnに有効なはずですので、n = 5の場合、プランカウント5の一意の顧客IDが1つしかないので、関数は "1"を返します。

どのように記述しますか?私はここでユニークな価値関数を探しましたが、それらのどれも私のために働くものではなく、範囲を選択する上で何の機能も見つけられませんでした。私はVBAについてはあまり知りません、ただのインターンです。

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

+0

あなたの問題文は少し不明です。あなたは2つの列があると述べましたが、あなたは1つだけを表示しています。誰が/どのように顧客IDの範囲を選択していますか? 1つのIDのリピート数をカウントする機能を使いたいですか? 2番目の列は、関数の外観の一部ですか? – PeterT

+0

あなたの返事をありがとう、私はそれをクリアさせてください。私が示したものと一致する列はすべて4です。これらの顧客IDのそれぞれには4つのプランがあります。私は、4つのプランを持つ一意の顧客IDの数が3に等しいことを伝えたいと思います。(06U0547,06U5166と06U4990はID列の唯一の一意の値であり、3つあります)だから、私は機能が "いくつかのプランの有効な数のために、強制的にその数のIDの列でID列を見てください。n = 4つの計画では、9つのIDマッチがありますが、それらは固有のIDなので、3を返します。 –

答えて

0

は、あなたのデータが列AとBである場合、セルC1で4または5を入力し

Private Sub worksheet_change(ByVal target As Range) 
If target.Address = "$C$1" And Range("C1").Value <> "" And IsNumeric(Range("C1").Value) Then 
    Range("D1:E20").ClearContents 
    Dim i As Long, j As Long, k As Long 
    k = 1 
    i = Range("C1").Value 
    For j = 1 To Cells(Rows.Count, 1).End(xlUp).Row 
     If Range("B" & j).Value = i Then 
      Range("D" & k).Value = Range("A" & j).Value2 
      Range("E" & k).Value = Range("B" & j).Value2 
      k = k + 1 
     End If 
    Next j 
    Range("D1:E" & j).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo 
    Range("F1") = Application.WorksheetFunction.CountA(Columns(4)) 
End If 
End Sub 

worksheet_changeイベントを使用して、このVBAコードを試してみてください。マクロはセルC1の変更を検出し、列DとEのデータ範囲の重複を削除します。次に、セルF1の一意の数を示します。

enter image description here

enter image description here

関連する問題