1
APC NM000038
APC NM000038
APC NM000038
APC NM000038
APC NM001127510
APC NM001127510
APC NM001127510

Excelで重複データをカウントしようとしていました。関連する回答が見つからないので、ここで質問します。そして早々にご回答いただきありがとうございます。

私はcountifしようとしています-2列の情報があります。列Aの値=特定の基準の場合、列Bに値が表示される回数をカウントしたい(列Bから同じ値をカウントしないで、異なる値のみをカウントする)-列Aのすべての値が対応するわけではない列 b の値。したがって、「5」を受け取った女性の数を確認したい場合は、列 A の「女性」の数に対応する列 B の「5」の値を確認する必要があります (すべての女性が「5」を持っているわけではなく、値は1 から 5 まで)

上記の例では、私は期待しています

NM001127510  2
NM000038     2
4

1 に答える 1

3

データがセルA1からB1000にあると仮定すると、次の式を使用します

=SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM000038"))

同様に

=SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM001127510"))

ファローアップ

私はそうしましたが、データセットは巨大で、数百 MB の Excel ファイルです。そのために vba を使用する必要があるかどうかはわかりません。vba についてよく知らないので – Maggie Mi 7 時間前

Excel ファイルが 100 MB 以上の場合、それを開いてから VBA コードを実行したり、式を使用したりすると、かなりの時間がかかります。結果だけが気になる場合は、これを試してください:)

新しい Excel ファイルを開きます。他のファイルが閉じていることを確認してください。モジュールにこのコードを貼り付けます。これを実行すると、出力が Sheet1 に貼り付けられます。

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim adodb As Object
    Dim result

    Set ws = Sheets("Sheet1")

    Set adodb = CreateObject("ADODB.Connection")

    adodb.CursorLocation = 3

    adodb.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & _
                  "C:\book1.xlsx" & ";Extended Properties=""Excel 12.0 Xml;IMEX=1" & _
                  "HDR=NO;" & """"

    Set result = adodb.Execute("Select F1, F2, Count(*) from [Sheet1$] Group by F1,F2")

    With ws
        .Range(.Cells(1, 1), .Cells(result.RecordCount, result.Fields.Count)) _
        = Application.Transpose(result.GetRows)
    End With

    '~~> Cleanup
    result.Close
    adodb.Close
    Set adodb = Nothing
    Set result = Nothing
End Sub

私の仮定(上記のコードを変更してください - 私のコードは以下の仮定に基づいています)

1) Excel 2007/2010 ファイルで作業しています。そうでない場合は、接続文字列を変更する必要があります。適切な接続文字列については、このリンクを参照してください。

http://connectionstrings.com/excel

2) データを含む Excel ファイルの名前が呼び出されBook1.xlsx、データがSheet1. また、それはに存在しますC:\

スナップショット

ここに画像の説明を入力

于 2012-05-05T08:53:58.183 に答える