vba - 通过 VBA 得出的公式结果不正确

标签 vba excel

我制作了一个简单的程序来将特定公式放入 Excel。问题是结果中出现了单引号。

结果应该是='[Fiber Loss Report - 7210 DCN.xlsx]1310'!G9 ,
我得到的结果是='[Fiber Loss Report - 7210 DCN.xlsx]1310'!'G9'

Sub CopyValues()
Dim n As Integer
Dim y As Integer
Dim rng As Range
y = 6
For n = 9 To 175
    rngText = "D" & y
    Range(rngText).Select
    'rng.Select
    'Range("D6").Select
    formulaText = "='[Fiber Loss Report - 7210 DCN.xlsx]1310'!G" & n
    ActiveCell.FormulaR1C1 = formulaText
    rngText = "E" & y
    Range(rngText).Select
    formulaText = "='[Fiber Loss Report - 7210 DCN.xlsx]1310'!G" & n + 1
    ActiveCell.FormulaR1C1 = formulaText
    n = n + 2
    y = y + 1
Next
End Sub

请让我知道如何避免这些单引号的出现。

最佳答案

除了我在您的问题下方的评论...

您需要在代码中找到趋势。这样你就可以避免循环。

例如,您的公式来自 D6D61G9 增加至G12G15等等。对于 Col E 也是如此。

所以有一个趋势。您可以问自己的下一个问题是“我可以写什么公式来获得 9、12、15、18 等结果?”。公式是

=(ROW()-3)*3

如果你把这个公式说成 G6把它拉下来,你会得到那个序列。

现在,我们也可以将公式写入整个范围,而不是循环。所以我们简单地将上面的内容与 Indirect 结合起来。 .看到这个

最短的代码?
Sub CopyValues()
    Dim ws As Worksheet
    Dim fName As String

    fName = "Fiber Loss Report - 7210 DCN.xlsx"
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        '"='[Fiber Loss Report - 7210 DCN.xlsx]1310'!G9"
        .Range("D6:D61").Formula = "=INDIRECT(" & Chr(34) & "'[" & _
                                   fName & "]1310'!G" & Chr(34) & _
                                   " & (ROW()-3)*3)"

        .Range("E6:E61").Formula = "=INDIRECT(" & Chr(34) & "'[" & _
                                   fName & "]1310'!G" & Chr(34) & _
                                   " & (ROW()-3)*3+1)"
    End With
End Sub

只是为了好玩

我只需两行就可以转换上面的代码。只需更换 Sheet1带有相关的工作表名称。
Sub CopyValues()
    ThisWorkbook.Sheets("Sheet1").Range("D6:D61").Formula = "=INDIRECT(" & Chr(34) & "'[Fiber Loss Report - 7210 DCN.xlsx]1310'!G" & Chr(34) & " & (ROW()-3)*3)"
    ThisWorkbook.Sheets("Sheet1").Range("E6:E61").Formula = "=INDIRECT(" & Chr(34) & "'[Fiber Loss Report - 7210 DCN.xlsx]1310'!G" & Chr(34) & " & (ROW()-3)*3+1)"
End Sub

关于vba - 通过 VBA 得出的公式结果不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31260081/

相关文章:

VBA 在 Word 2016 中编译,但不是 Word 2010

excel - 在 VBA 中从范围底部向上执行 FIND

events - Visual Basic 中的 MSWinsock.Winsock 事件处理

ms-access - 每当在 Access 中重新选择选项卡式表单时运行 VBA 代码

asp.net - 读取 Excel : Column Names truncated to first 64 characters

vba - 使用 VBA 分发 Excel 电子表格的最佳方式

VBA比较2个数组循环>>突出显示差异并将其复制到第三列

python - Pandas read_excel 不读取某些 xlsx 文件,返回空数据框

excel - 如何在 VBA 中使用单元格值作为命名范围?

c# - 通过 C# 将字符串、数字数据写入 Excel 是可行的,但 Excel 无法正确处理数字数据