Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 插入带除法的简单公式时出现运行时错误1004_Excel_Vba_Formula - Fatal编程技术网

Excel 插入带除法的简单公式时出现运行时错误1004

Excel 插入带除法的简单公式时出现运行时错误1004,excel,vba,formula,Excel,Vba,Formula,我有一个小代码,允许根据之前计算的数据填写表格: (最后一行让我们感兴趣) ”插入计算的值 对于工作表(WsPrevData)中的每个CellCalc。范围(“D”&FirstLine+2+NbLinesYear*计数器+2*区域计数-2&“:O”&FirstLine+2+NbLinesYear*计数器+2*区域计数-2) CountCells=0 CellCalc.选择 对于封隔线=一线+2至一线+2+NbLinesYear*计数器-NbLinesYear+2*区域计数-2步骤NbLinesY

我有一个小代码,允许根据之前计算的数据填写表格:

(最后一行让我们感兴趣)

”插入计算的值
对于工作表(WsPrevData)中的每个CellCalc。范围(“D”&FirstLine+2+NbLinesYear*计数器+2*区域计数-2&“:O”&FirstLine+2+NbLinesYear*计数器+2*区域计数-2)
CountCells=0
CellCalc.选择
对于封隔线=一线+2至一线+2+NbLinesYear*计数器-NbLinesYear+2*区域计数-2步骤NbLinesYear
如果是数值(范围(拆分(单元格(1,CellCalc.Column).Address,“$”(1)和PackOfLines).Value),则
CellCalc.Value=CellCalc.Value+范围(拆分(单元格(1,CellCalc.Column).地址,“$”(1)和封装线)。值
CountCells=CountCells+1
如果结束
下一个
pouet=细胞计算值
CellCalc.Formula=“=”&pouet&“/”&CountCells运行时错误1004-_-
下一个
基本上,它只是获取已填充数据中不同单元格中的值,然后对这些单元格进行平均,并将其写入最后一个单元格

我想用除法得到值,而不是简单的普通数字

因此,我使用“.formula”并尝试插入公式。此时,我收到以下错误消息:

运行时错误1004:应用程序定义或对象定义错误

pouet=120166907548137
(双精度)

CountCells=3
(整数)

我尝试了不同的方法:

  • 删除“=”符号允许插入公式(该公式将变得无用)

  • 直接插入结果有效(但我需要计算的详细信息)

  • 将“pouet”转换为整数可以使其工作,但我丢失了小数

  • 另一方面,将两个变量都设置为Double并不能使其工作

  • 删除长数字中的某些数字不会改变任何内容

  • 删除斜杠没有任何作用

  • 将CountCells定义为double不会改变任何事情

  • 使用.FormulaR1C1代替.Formula不会改变任何内容


我已将
公式
更改为
公式本地
,它非常适合我

Dim pouet As Double
Dim CountCells As Integer

pouet = 120.166907548137

CountCells = 3 

Range("A1").FormulaLocal = "=" & pouet & "/" & CountCells

在VBA中,小数点分隔符是点,但在某些国家(比如我的国家和我猜你们的国家),小数点分隔符是点。当您使用
公式
公式1c1
时,VBA需要英文格式的值(公式名称必须为英文,参数用逗号分隔,依此类推),但如果您使用
公式本地
则可以使用区域设置

上面的代码非常适合我。希望这有帮助

更新:好吧,另一件令人惊讶的事情是:


Range(“A1”).Formula=“=”&Replace(pouet),“,”,“)&“/”&CountCells

公式更改为
公式1c1
,然后查看内容happens@Foxfire烧啊烧啊什么都没发生。。。仍然是相同的错误:(如果你想要一个“简单的普通数字”,我假设你是指一个整数,请使用或@TimStack引号:“我想让除法产生一个值,而不是一个简单的普通数字。”(好的,我对它进行了编辑,使它更容易理解^^)@TimStack你的意思是替换“十进制分隔符”在变量“pouet”中包含的数字中?我以前从未遇到过此问题…我只是尝试将“pouet”转换为整数,它可以工作…但我需要逗号:(哦,非常感谢!Excel会产生这样的问题,我仍然感到震惊……但是,这是否意味着在一个小数分隔符不是逗号的国家,它仍然可以工作?问题是,您正在构建一个字符串,其中包含一个双精度值,并将一个点作为小数点。例如:
Range(“A1”)。公式=“=10.5/0.5”
将正常工作。一旦涉及变量,您可能会遇到@FoxFireAndBurnsandBurns在这里描述的问题。好问题,我不确定它是否会工作。来自美国的人应该测试我发布的代码并检查发生了什么。我可以说,如果您将
FormulaLocal
与语言中的函数结合使用ge名称,它肯定会失败。@FoxfireAndBurnsAndBurns如果它能工作,那只是“逗号-点”十进制分隔符问题……让我震惊的是“CellCalc.value”(也称为“pouet”)中的值来自Excel的计算,我自己没有输入值…因此,Excel生成它自己的问题…无论如何,谢谢大家:)