不知道怎么回事。在将范围的公式分配给数组之前,我已经设置了Application.AutoCorrect.AutoFillFormulasInLists = False。期望公式的值将唯一地设置为数组中的值。相反,它们会立即自动填充到数组中的第一个值。
我已经确保数组的格式是正确的,并且只要我不把"=“放在字符串前面,就会显示正确的值。只有当字符串是有效的Excel公式时,Excel才会更改表中的值。
过去也有人说过Application.AutoCorrect.AutoFillFormulasInLists = False应该修复这个问题,但我认为Office365是不同的。另外,Excel还会自动将行添加到表中,即使关闭了该选项(尽管我确实希望这样做)。也许宏比excel本身具有不同的设置?有什么建议吗?
编辑:添加一些示例代码,为我生成相同的结果。
Public Sub Test()
Dim testTable As ListObject
If Sheet1.ListObjects.Count = 0 Then
Set testTable = Sheet1.ListObjects.Add(xlSrcRange, Sheet1.Range(Sheet1.Cells(1, 1), Sheet1.Cells(3, 1)))
Else
Set testTable = Sheet1.ListObjects(1)
End If
Dim dataArray As Variant
dataArray = Application.Transpose(Array("=""Formula 1""", "=""Formula 2""", "=""Formula 3"""))
Application.AutoCorrect.AutoFillFormulasInLists = False
testTable.DataBodyRange.Formula = dataArray
End Sub发布于 2021-12-10 01:18:54
老实说,即使在Excel 365之前,我也不确定这是可能的,并且会欢迎相反的证据(我不能再测试)。
若干备选方案,每一种方案都可能有问题:
.FormulaArray,如果您的公式不以数组公式的形式中断,并且您不介意公式栏中的封闭{},则这是行不通的。.Formula,但是用“块”编写公式--即将数组分割成几个较小的数组并连续写入它们。https://stackoverflow.com/questions/70298198
复制相似问题