【发布时间】:2020-02-04 05:47:10
【问题描述】:
我有这个小代码允许根据之前计算的数据填写表格:
(我们感兴趣的最后一行)
'inserts the values calculated
For Each CellCalc In Worksheets(WsPrevData).Range("D" & FirstLine + 2 + NbLinesYear * Counter + 2 * RegionCount - 2 & ":O" & FirstLine + 2 + NbLinesYear * Counter + 2 * RegionCount - 2)
CountCells = 0
CellCalc.Select
For PackOfLines = FirstLine + 2 To FirstLine + 2 + NbLinesYear * Counter - NbLinesYear + 2 * RegionCount - 2 Step NbLinesYear
If IsNumeric(Range(Split(Cells(1, CellCalc.Column).Address, "$")(1) & PackOfLines).Value) Then
CellCalc.Value = CellCalc.Value + Range(Split(Cells(1, CellCalc.Column).Address, "$")(1) & PackOfLines).Value
CountCells = CountCells + 1
End If
Next
pouet = CellCalc.Value
CellCalc.Formula = "=" & pouet & "/" & CountCells 'Runtime error 1004 here -_-
Next
基本上,它只是获取已填充数据中不同单元格中的值,然后对这些单元格进行平均,并将其写入最后一个单元格。
我希望除法得到值,而不是简单的纯数字。
因此,我使用“.formula”并尝试插入公式。这是我收到他以下错误消息的时候:
运行时错误 1004:应用程序定义或对象定义错误
pouet = 120,166907548137(双)
和CountCells = 3(整数)
我尝试了不同的方法:
删除“=”符号允许插入公式(变得无用)
直接插入结果有效(但我想要计算的细节)
将“pouet”转换为整数可以使其工作,但我会丢失小数...
另一方面,将两个变量都设为 Double 并不能正常工作
删除长数字中的一些数字不会改变任何事情
删除斜线没有任何作用
将 CountCells 定义为 double 不会改变任何事情
使用 .FormulaR1C1 而不是 .Formula 没有任何改变
【问题讨论】:
-
把
Formula改成FormulaR1C1看看会发生什么 -
@Foxfire And Burns And Burns 什么都没有发生......仍然是同样的错误:(
-
如果你想要一个“简单的普通数字”,我认为你的意思是一个整数,请使用int function 或round function
-
@TimStack 引用:“我希望除法得到值,而不是简单的纯数字。” (好的,我编辑了它以使其更易于理解^^)
-
@TimStack 您的意思是替换变量“pouet”中包含的数字中的“小数分隔符”?我以前从来没有遇到过这个问题...我只是尝试将“pouet”转换为整数,它可以工作...但是我需要逗号:(