我正在尝试在 Excel 中创建动态发票。动态部分是用户可以从列表中选择发票针对的商店。我尝试在选择商店后获取要填充的可用项目。
在我的工作簿的一张表上,我列出了所有不同的表格,这些表格定义了商店、产品以及每个商店所售产品(两者之间的交集记录)。在我的示例中,“Corner Market”售有:所有 4 种产品,但“Tim's Hardware”仅售有 1/2 英寸垫圈和钻头套装。
每当用户选择合适的商店(N3 和 N21)时,我都想生成一个动态表格,如链接屏幕截图中的 N5 和 N23。因此,表格应该随着商店名称值的变化而变化。(我只对生成一张发票感兴趣,但屏幕截图中包含了 2 张作为示例。)然后,用户可以输入数量值来生成每个项目的价格和发票总金额。
我正在寻找有关如何最好地完成此类任务的建议。如果可能的话,我会尽量避免使用 VBA 宏。我猜数据透视表可能是解决方案,或者可能是与数据关系有关的东西(我对此不太熟悉)。
截屏:https://i.stack.imgur.com/ICZDW.png
任何帮助都值得赞赏-提前致谢!
答案1
您可以将这 3 个表添加到 Power Pivot 的数据模型中。
但请注意,Power Pivot 可以在“Power Pivot 在哪里?'。它们之间的关系如下图所示。
这商店 ID见表 2 和产品 ID表3中的是主键字段。
然后您可以创建一个 Power Pivot 表。
这商店名称可以是过滤字段。产品名称可以是行字段,单价可以是值字段。
但是数量和价格列可以写在下一列中。
在价格标题下,您可以输入公式=IF(P12="","",GETPIVOTDATA("[Measures].[Sum of Unit Price]",$N$11,"[Table3].[Product Name]","[Table3].[Product Name].&[1/2"" Washer]")*P12)
,请将公式向下拉以覆盖足够大的数据范围。例如我选择的范围从问题12:问题21获取价格值。GETPIVOTDATA(“[测量值].[单价总和]",$N$11,“[表 3].[产品名称]",“[表 3].[产品名称].&[1/2"" 垫圈]”)可以使用鼠标选择O12。
对于总计,您可以输入公式=IF(SUM(Q12:Q21)>0,SUM(Q12:Q21),"")
。