假設你數據是在單元格A1到B1000,用這個公式
=SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM000038"))
類似
=SUMPRODUCT((A1:A1000="APC")*(B1:B1000="NM001127510"))
隨訪
我這樣做,但數據集是巨大的,幾百MB的Excel文件。我不能確定我是否需要使用VBA來做到這一點,因爲我不知道了很多關於VBA - 瑪吉彌6小時前
如果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文件的名稱叫做和數據在Sheet1
。此外,它駐留在C:\
快照
通常,'總結以上(多值匹配)'可以用'SUMIF'完成。你會澄清你的數據是如何組織的嗎? A和B列是什麼? –
此表不應該是:'NM001127510 3'和'NM000038 4'嗎?或者我錯過了什麼? – lnafziger