如何解决返回与下拉列表匹配的一组单元格
我试图根据另一个工作簿中的下拉列表在数据透视表中返回一组单元格。在此示例中,当我选择“存储1”时,我想返回整个子表,例如
MESS 2 4534, 夜2 4274, 工具3 8123
我认为这是一个子行,但使用函数GETPIVOTDATA仅喜欢返回特定值,因为在引用下拉列表时,我只能提取总计。 这是我的数据透视表。
感谢您的帮助。
RAWDATA(不是图像):
class Person:
def __init__(self):
self.name = 'Unassigned'
People = ["David","Emma","Brian"]
#create a list of your objects
obj_list = [Person() for i in range(len(People))]
#convert People names to dictionary keys
dictionary = dict(zip(People,obj_list))
print(dictionary['David'].name)
#Unassigned
解决方法
此代码在单元格Dashboard
中的工作簿Summary
,工作表E3
中查找更改,然后使用VBA更改数据透视表pTbl
的值。
触发后,VBA代码将
- 清除过滤器(如果存在)
- 使用
E3
的内容过滤数据
要访问VBA:
- 按alt-F11
- 展开Microsoft Excel对象(左侧)
- 找到“摘要”工作表
找到数据透视表的名称
- 点击数据透视表
- 点击“数据透视表分析”标签
- 在左侧,您将看到“数据透视表名称:”
- 将
pTbl
(当前为“ PivotTable6”)更改为此名称
您可以根据需要更改Dashboard
,Summary
,E3
和pTbl
的值。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wb As Workbook: Set wb = Workbooks("Dashboard")
Dim ws As Worksheet: Set ws = wb.Worksheets("Summary")
Dim trigRng As Range: Set trigRng = ws.Range("E3")
Dim pTbl as String
pTbl = "PivotTable6"
If Not Application.Intersect(trigRng,Range(Target.Address)) Is Nothing Then
ws.PivotTables(pTbl).PivotFields("Store").ClearAllFilters
ws.PivotTables(pTbl).PivotFields("Store").PivotFilters.Add2 Type:=xlCaptionEquals,Value1:=trigRng.Value
End If
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。