我是这个论坛和VBA的新手,并希望基于此数据库创建VBA用户界面:
这允许用户执行以下操作:
2-根据该客户的数据创建图表。
结果如下所示:
How the chart should look like
除了使用数据透视表/图表编辑原始数据(对数据进行求和或对其进行其他操作)外,我只想简单地分别显示每个客户端的数据,以便进行比较。
任何帮助,链接,方向都将受到欢迎, 谢谢!
PS:到目前为止,我已经基于用户选择的文件开发了该数据库,一旦有了数据,我就进行计算并将结果最终存储到数据库中。如果您想了解如何创建数据库,可以为您提供帮助。
答案 0 :(得分:0)
您是否可以将所有内容都放在数据透视表上?未能通过命名引用建立专用列表。即,当您在“客户端”中选择“客户端1”时,将返回其余详细信息。
要从中得到什么的总体描述需要详细说明。
答案 1 :(得分:0)
如果右键单击要计数的值(在单元格而不是图表值框中)并且不求和,则可以在“汇总值依据”字段中更改该值。如果我误解了,请告诉我。
答案 2 :(得分:0)
我将举一个例子,以便您将其与数据连接起来。
Sub setConnection()
Dim ws As Worksheet
Dim WB As Workbook
Dim Pc As PivotCache
Dim Pv As PivotTable
Dim pFD As PivotField
Dim con As WorkbookConnection
Dim strConn As String
Dim myPath As String
Dim Target As Range
Dim Cht As Chart, shp As Shape
Dim objCht As ChartObject
Set WB = ThisWorkbook
myPath = WB.Path & "\" & "pivotData.xlsx" '<~~ set your data file path
strConn = "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & myPath & ";Mode=Share Deny Write;Extended Properties='HDR=YES;';Jet OLEDB:System database='';Jet OLEDB:Registry Path='';Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password='';Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False"
Set con = WB.Connections.Add( _
Name:="Movie conn", _
Description:="", _
ConnectionString:=strConn, _
CommandText:="Data$", _
lCmdtype:=XlCmdType.xlCmdTable)
'CommandText:="Data$" <~~ Database table name , this is Excel sheet
Set ws = Sheets("External") '<~~ set your sheet
Set Target = ws.Range("a1")
Target.CurrentRegion.Clear
For Each objCht In ws.ChartObjects
objCht.Delete
Next objCht
Set Pc = WB.PivotCaches.Create(SourceType:=xlExternal, SourceData:=con)
Set Pv = Pc.CreatePivotTable(Target, TableName:="pv3")
Set shp = ws.Shapes.AddChart
Set Cht = shp.Chart
With Cht
.SetSourceData Target.CurrentRegion
End With
Set pFD = Pv.PivotFields("Studio") 'set your field
With pFD
.Orientation = xlRowField
.Position = 1
End With
Set pFD = Pv.PivotFields("Year")
With pFD
.Orientation = xlColumnField
.Position = 1
End With
Set pFD = Pv.PivotFields("Worldwide")
With pFD
.Orientation = xlDataField
.Function = xlSum
.Position = 1
End With
End Sub
图片