我正在开展一个excel项目,该项目有助于在为每个单一值生成图表时可视化血液工作。
由于我试图阻止图表中的空值,我添加了两张实际管理数据("#data")和图表(" #chart")的表格。在"数据"一个人输入值和日期,在"图表"你会看到图表(不会显示空图表),#34; #data"有助于生成系列和#34; #chart"实际上带有图表。
目前我正在开发一个VBA脚本,这个脚本可以帮助我在" #chart"上复制图表。并改变重复的系列(我需要大约100个)。它适用于第一个副本,但在第二个我得到运行时错误#1004:应用程序定义的对象定义错误。 我认为它可能与图表的系列有关,所以我使系列的范围相同 - 不幸的是,这并没有解决问题。第一个重复完美,第二个没有。
这是指向我文件的链接: http://ovh.to/ZkmYCUk
复制脚本:
Sub tt()
j = 3
L = "C"
s = 4 * (j - 1)
Cr = Int((j - 1) / 4) + 1
cc = (j - 1) Mod 4 + 1
Dim oldc As ChartObject
Dim newc As Object
Set ws = Sheets("#charts")
no = "CH_A"
nn = "CH_" & L
Set oldc = ws.ChartObjects(no)
Set newc = oldc.Duplicate
newc.Name = nn
newc.Left = ws.Cells(Cr, cc).Left
newc.Top = ws.Cells(Cr, cc).Top
newc.Height = ws.Cells(Cr, cc).Height
newc.Width = ws.Cells(Cr, cc).Width
For k = 1 To newc.Chart.SeriesCollection.Count
With newc.Chart.SeriesCollection(k)
.Formula = Replace(.Formula, "A", L)
End With
Next k
newc.Chart.ChartTitle.Text = "='#data'!$A$" & (s + 2)
End Sub
图表系列:
A_L = IF(COUNT(data!$F$3:$S$3)>0; OFFSET('#data'!$B$1; 0; 0; 1; COUNT(data!$F$3:$S$3)); 0)
A_V = IF(COUNT(data!$F$3:$S$3)>0; OFFSET('#data'!$B$2; 0; 0; 1; COUNT(data!$F$3:$S$3)); 0)
A_M = IF(COUNT(data!$F$3:$S$3)>0; OFFSET('#data'!$B$3; 0; 0; 1; COUNT(data!$F$3:$S$3)); 0)
A_D = IF(COUNT(data!$F$3:$S$3)>0; OFFSET('#data'!$B$4; 0; 0; 1; COUNT(data!$F$3:$S$3)); 0)
B_L = IF(COUNT(data!$F$4:$S$4)>0; OFFSET('#data'!$B$5; 0; 0; 1; COUNT(data!$F$4:$S$4)); 0)
B_V = IF(COUNT(data!$F$4:$S$4)>0; OFFSET('#data'!$B$6; 0; 0; 1; COUNT(data!$F$4:$S$4)); 0)
B_M = IF(COUNT(data!$F$4:$S$4)>0; OFFSET('#data'!$B$7; 0; 0; 1; COUNT(data!$F$4:$S$4)); 0)
B_D = IF(COUNT(data!$F$4:$S$4)>0; OFFSET('#data'!$B$8; 0; 0; 1; COUNT(data!$F$4:$S$4)); 0)
C_L = IF(COUNT(data!$F$5:$S$5)>0; OFFSET('#data'!$B$9; 0; 0; 1; COUNT(data!$F$5:$S$5)); 0)
C_V = IF(COUNT(data!$F$5:$S$5)>0; OFFSET('#data'!$B$10; 0; 0; 1; COUNT(data!$F$5:$S$5)); 0)
C_M = IF(COUNT(data!$F$5:$S$5)>0; OFFSET('#data'!$B$11; 0; 0; 1; COUNT(data!$F$5:$S$5)); 0)
C_D = IF(COUNT(data!$F$5:$S$5)>0; OFFSET('#data'!$B$12; 0; 0; 1; COUNT(data!$F$5:$S$5)); 0)
答案 0 :(得分:1)
如果您使用
.FormulaR1C1 = Replace(.FormulaR1C1 , "A", L)
而不是
.Formula = Replace(.Formula, "A", L)
'1004'消失了。打败我为什么,但当'.formula'导致错误时,它总是值得尝试。你仍然需要考虑一下图表的位置。目前,它们都堆叠在一起。但这应该是可行的。