データがセル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:\
スナップショット
