这是我用来生成图表的两个不同代码,并使用两个不同的按钮进行计算。
Code1:要生成图表,可以正常使用
Private Sub CommandButton1_Click()
'PURPOSE: Create a chart (chart dimensions are required)
Dim rng As Range
Dim cht As ChartObject
'Your data range for the chart
Set rng = ActiveSheet.Range("A27:B113")
'Create a chart
Set cht = ActiveSheet.ChartObjects.Add( _
Left:=ActiveCell.Left, _
Width:=650, _
Top:=ActiveCell.Top, _
Height:=250)
'Give chart some data
cht.Chart.SetSourceData Source:=rng
'Determine the chart type
cht.Chart.ChartType = xlColumnClustered
End Sub
Code 2: To do the calculations
Sub GenerateCharts()
[D32].Value = "AA"
Range("D31").Formula = Application.WorksheetFunction.SumIf(Range("B27:B113"), ">=56") / Application.WorksheetFunction.Sum(Range("B27:B113"))
[H35].Value = "All Defects"
Range("I35").Formula = "=SUM(B27:B113)"
[H36].Value = "Percentage(%)"
Range("I36").Formula = "=(1-(I28/I29))*100"
[H28].Value = "Non Kaizens"
**Range("I28").Formula = Application.WorksheetFunction.SumIf(Range("'Machine 4th QTR’!V:V", "'Machine 4th QTR'!B:B","", "'Machine 4th QTR’!V:V'"), "<56"**)
End Sub
我这里有两个问题 1.代码1运行正常,来到代码2,它所做的就是计算值。 当我运行代码2时, BOLD 中的部分会显示错误。 BOLD 部分将下面显示的公式转换为VBA代码。
=SUMIFS('Machine 4th QTR'!V:V,'Machine 4th QTR'!B:B,"",'Machine 4th QTR'!V:V,"<56")
这是显示的错误消息:
错误的论点数或无效的财产分配
我无法弄清楚最后一篇文章中出了什么问题(突出显示)。
答案 0 :(得分:0)
将""
更改为""""
或TEXT(,)
,并将"<56"
更改为""<56""
。您需要在引用的字符串中加倍引号或使用替代。
如果您想要单元格中的公式,请使用表示公式的字符串,而不是WorksheetFunction.SumIfs公式的评估(又名结果)。
您需要一个SUMIFS,而不是SUMIF。
您在某些地方使用了后引号(例如’
)而不是勾号(例如'
)。
Range("D31").Formula = "=SUMIF(B27:B113, "">=56"")/SUM(B27:B113)"
...
Range("I28").Formula = "=SUMIFS('Machine 4th QTR'!V:V, 'Machine 4th QTR'!B:B, TEXT(,), 'Machine 4th QTR'!V:V, ""<56"")"