Gaf*_*ffi 3 excel vba pivot-table excel-2003 excel-vba
给出一组这样的数据:
User Item1 Desc. Item1 Sel. Item2 Desc. Item2 Sel. Item3 Desc. Item3 Sel.
UserA Item 1 Yes Item 2 Yes Item 3 Yes
UserB Item 1 Yes Item 2 No Item 3 No
UserB Item 1 Yes Item 2 Yes Item 3 No
UserC Item 1 Yes Item 2 No Item 3 Yes
UserA Item 1 No Item 2 Yes Item 3 Yes
UserA Item 1 Yes Item 2 No Item 3 Yes
Run Code Online (Sandbox Code Playgroud)
有没有办法可以使用内置的Excel工具,函数或公式来生成这样的输出
Item UserA UserB UserC
Item1 1 0 0
Item2 1 1 1
Item3 0 2 0
Run Code Online (Sandbox Code Playgroud)
如果双方Items
并Users
得到巩固,并呈现值的计数No
S中的表内?
我被要求为我的一位同事准备这个,最后在下面创建了VBA功能.这很快,很脏,而且需要重构,当然,它确实得到了我所需要的东西.
Sub SummarizeData()
Dim wksSrc As Worksheet
Dim dicAssoc As Object
Dim l As Long
Dim i As Integer
Dim rngCell As Range
Dim v As Variant
Set dicAssoc = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Sheets.Add()
.Name = "Results"
Set wksSrc = ThisWorkbook.Sheets("data")
For l = 2 To 184
If Not dicAssoc.exists(wksSrc.Range("C" & l).Value) Then
dicAssoc.Add wksSrc.Range("C" & l).Value, wksSrc.Range("C" & l).Value
End If
Next l
.Range("A1:A26").Value = ThisWorkbook.Sheets("Sheet5").Range("A1:A26").Value
l = 2
For Each v In dicAssoc.items
.Cells(1, l).Value = v
l = l + 1
Next v
For Each rngCell In wksSrc.Range("A2:CT184").Cells
For l = 2 To 26
If rngCell.Value = .Cells(l, 1).Value Then
If rngCell.Offset(0, 1).Value = "No" Then
For i = 2 To 148
If .Cells(1, i).Value = wksSrc.Range("C" & rngCell.Row).Value Then
.Cells(l, i).Value = .Cells(l, i).Value + 1
End If
Next i
End If
End If
Next l
Next rngCell
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
我最初试图在没有代码的情况下解决这个问题,但经过一些试验和错误后,决定最好不要浪费我一整天的时间来完成这个项目.我以为我可以尝试DCOUNTA
,但这需要我多拉多行数据而浪费空间:
DCOUNT
标准示例:
Item1 Sel. Item2 Sel. Item3 Sel. User
No UserA
No UserA
No UserA
No UserB
No UserB
No UserB
Run Code Online (Sandbox Code Playgroud)
等等等等.有大约25个项目和大约25个用户,这将是一个巨大的块,其中大部分必须手动创建.那时候,我不妨用手去计算一切.
我也想过用的一些组合VLOOKUP
,HLOOKUP
,INDEX
,和INDIRECT
,但我永远无法得到所计数结果所有的No
S; 它总是抓住它找到的第一条线.
我想知道是否有一种相对简单的方法来生成此摘要而不使用VBA.
使用SUMPRODUCT
Formula 可以轻松实现您想要的效果.
请参阅随附的示例和屏幕截图.
要查找项目1和用户1的"否"编号,我使用的公式是
=SUMPRODUCT(($A$2:$A$7=$B$11)*($C$2:$C$7="No"))
Run Code Online (Sandbox Code Playgroud)
同样,你必须做其余的事情.
样本文件:
http://wikisend.com/download/725440/Gaffi.xlsx
快照:
归档时间: |
|
查看次数: |
366 次 |
最近记录: |