下面是表格
Amt | Val |位置
230 | a | DEL
450 | b | KOL
670 | c | BLR
890 | d | DEL
111 | e | KOL
133 | a | KOL
155 | b | DEL
177 | c | BLR
199 | a | DEL
221 | b | BLR
243 | c | BLR
265 | d | KOL
287 | a | KOL
309 | b | DEL
331 | c | DEL
353 | d | KOL
375 | e | BLR
397 | a | BLR
419 | b | DEL
441 | c | KOL
中的a,b,c,d,e值如何根据a's..b的...的...的数量找到各个位置的最大2个值。
对于一个位置,我能够通过数据透视表获得前2个 val 的值的总和
请告诉我们如何通过VBA同时获得所有位置金额的最高2
val ,
我已经发布了相同的VBA代码,只给出了一个位置的结果。
抱歉无法上传快照。
答案 0 :(得分:1)
假设您的数据位于A1至C20。您有三个独特的位置:DEL,KOL,BLR。
在D1中输入:
= SUMPRODUCT( - (1澳元:20澳元)*(C $ 1:C $ 20 = C1))并通过D3复制
在E1中输入:
<强> = LARGE(D1:D3,1)强>
在E2中输入:
<强> = LARGE(D1:D 3,2)强>
应该是这样的:
编辑:
根据您的评论,DEL的最高两个值为:
<强> = LARGE(IF(C1:C20 =&#34;删除&#34;,A1:A20),1)强>
和
<强> = LARGE(IF(C1:C20 =&#34;删除&#34;,A1:A20),2)强>
这些是必须使用 CNTRL-SHFT-ENTER 输入的数组公式,而不仅仅是 ENTER 键
答案 1 :(得分:0)
DMAX 函数根据给定条件返回列表或数据库中列中的最大数字。
答案 2 :(得分:0)
1. Insert a Pivot Table.
2. Add Val in Row Labels.
3. Add Location in column Labels.
4. Add Amt in Values field(Sumof Amt).
Now In created Pivot Table,
1. In column labels filter for only one location(eg: Blr).
2. In Row Labels filter apply value filters and select Top 10..(last item).
3. In place of 10(by default) give 2.
4. Now the table consists of Top 2 val with their sum of Amount for BLR Location.
相同的VBA代码:
Private Sub CommandButton1_Click()
Dim wkbk As Workbook
Set wkbk = ActiveWorkbook
With wkbk.Sheets(1)
LastRow = .Range("A1").End(xlDown).Row
LastCol = .Range("A1").End(xlToRight).Column
Set rngSource = .Range("A1", .Cells(LastRow, LastCol))
End With
With wkbk.Sheets(2)
Set dst = .Range("a1")
End With With wkbk
Sheets(1).PivotTableWizard _
SourceType:=xlDatabase, _
SourceData:=rngSource, _
TableDestination:=dst, _
TableName:="Pivotinfo"
End With
With wkbk.Sheets(2).PivotTables("Pivotinfo")
.PivotFields("Val").Orientation = xlRowField
.PivotFields("Location").Orientation = xlColumnField
With .PivotFields("Amt")
.Orientation = xlDataField
.Function = xlSum With wkbk.Sheets(2).PivotTables("Pivotinfo").PivotFields("Location")
.PivotItems("DEL").Visible = False
.PivotItems("KOL").Visible = False
End With
With wkbk.sheets(2).PivotTables("Pivotinfo").PivotFields("Val").AutoShow _
xlAutomatic, xlTop, 2, "Sum of Amt"
End With
End With
End With
End Sub