我正在尝试从表中对数据进行分组。该表是根据数据透视表构建的,如果员工在某个项目上工作,则返回的值等于1。
我试过Hlookup,vlookup ......无法弄明白。
表中的“1”值表示该人员在该特定项目上工作。 我需要一个公式来说,如果L.Bish =“1”,那么返回所有同样等于“1”的名字
漫长的方法是过滤每个人的表值,使其值为“1”,以查找其他团队成员是否与该人合作过。
然后,我需要将此公式应用于所有其他团队成员,以查看谁在项目中有没有合作。
任何帮助或方向都会很棒
如您所见,Bish使用了以下内容: 卡尔 好 等
表格如下:
答案 0 :(得分:2)
我假设你有行和列的员工和项目,反之亦然。如果您要“移动”您的桌子,您可以将其放回枢轴中并按照您想要的方式进行分组。
查看我的Table2DB加载项here。
在您的情况下,您只需运行下面的宏并根据新工作表创建一个支点
Sub UnPivot()
Dim lLastCol As Long, lLastRow As Long
Dim rgCell As Range, shtOrg As Worksheet, shtDest As Worksheet
Dim lRowDest As Long
'turn off updates to speed up code execution
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Set shtOrg = ActiveSheet
lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
lLastCol = Cells(48, Columns.Count).End(xlToLeft).Column
Set shtDest = Sheets.Add
lRowDest = 2
shtDest.Cells(1, 1) = "Project"
shtDest.Cells(1, 2) = "Employee"
With shtOrg
For Each rgCell In .Range(.Cells(49, 2), .Cells(lLastRow, lLastCol)).SpecialCells(xlCellTypeConstants)
If rgCell.Value = 1 Then
shtDest.Cells(lRowDest, 1) = .Cells(rgCell.Row, 1)
shtDest.Cells(lRowDest, 2) = .Cells(48, rgCell.Column)
lRowDest = lRowDest + 1
End If
Next rgCell
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
为了让那些不能一起工作的人,建立一个如下所示的表并使用公式: = IF(COUNTIFS(OFFSET($ A $ 49:$ A $ 78,0,MATCH($ A2,$ 48:$ 48,0)-1 ,,),1,OFFSET($ A $ 49:$ A $ 78,0,MATCH( B $ 1,$ 48:$ 48,0)-1 ,,),1)> 0,“Did”,“Did not”)& “共同努力”