插入引用替代列

时间:2017-10-12 11:57:53

标签: excel excel-vba excel-formula vba

我正在尝试在连续列的工作表的同一行中插入以下公式 ='外部成本B0'!F73 ,但工作表中的单元格引用“F73”为“外部成本” “指备用列,例如F73,H73,J73,L73等。

以下是带有公式注释的电子表格的屏幕截图

Screen Capture of formula sheet

这是我尝试的代码,但我正在努力想出如何让备用列引用工作。

Dim CostColumns As Long

'选择要开始从

插入公式的单元格
Range("E26").Select

'从“外部成本B0”表中的F(6)列开始,然后逐步进入每个备用列

For CostColumns = 6 To 600 Step 2
    ActiveCell.Formula = "= ""'External Costs B0'!"" & Rows(73)Columns(CostColumns)"

移动到下一个单元格以插入公式并使列引用前进2列

    ActiveCell.Offset(0, 1).Select
Next CostColumns

最终结果与我在很多帖子中看到的错误相同:

应用程序定义或对象定义的错误。

以下是我尝试过的公式插入的许多其他语法,但没有成功。任何帮助是极大的赞赏。根据上面的示例,下面引用外部成本B0表中的第40行而不是第73行。

Range("E26").Select
 For CostColumns = 6 To 66 Step 2
    'ActiveCell.FormulaR1C1 = "= worksheets("""External Costs B0""").Cells(40,6).Value"
    'ActiveCell.FormulaR1C1 = "='External Costs B0'!R[14]C[CostColumns]"
    'Range("E26:AK26").FormulaR1C1 = "='External Costs B0'!R[14]C[CostColumns]"
    'ActiveCell.FormulaR1C1 = "= worksheets('External Costs B0')!" & " Rows(40)Columns(CostColumns)"
    'Range("E26:AK26").FormulaR1C1 = "='External Costs B0'!R[14]C[+2]"
    'Range("E26:AK26").FormulaR1C1 = "=Wksht.Cells(40,CostColumns) &"
    'Range("E26:AK26").Formula = "=worksheets('External Costs B0'!)" & ".Cells(40,6)"
    'ActiveCell.Formula = "= worksheets('External Costs B0'!).Cells(40,6).Value"
     ActiveCell.Offset(0, 1).Select
Next CostColumns

3 个答案:

答案 0 :(得分:1)

使用此:

ActiveCell.Formula = "='External Costs B0'!" & Cells(73, CostColumns).Address(0, 0)

问题在于Rows(73)和Columns(CostColumns)都返回一个Range对象,你无法连接到一个字符串。

答案 1 :(得分:0)

如果您使用FormulaR1C1并且没有像下列子中的选择那样更容易: (请根据需要更改R,RowOffset和FormulaUntilColumn)

Sub Formulas()
Dim I As Integer
Const R As Long = 9     'row
Const RowOffset As Integer = -8
Const ForumulaUntilColumn As Long = 7
    For I = 1 To ForumulaUntilColumn
        Cells(R, I).FormulaR1C1 = "=R[" & RowOffset & "]C[" & I - 1 & "]"
    Next I
End Sub

P.S。:在'='和'R ['

之间的任何其他公式中添加工作簿和表名

答案 2 :(得分:0)

此代码会将您的公式放在单元格Sheet1!A1:AD1中。

A1中的公式为='External Costs B0'!$A$73 在B1中,它将是='External Costs B0'!$C$73,依此类推,直到='External Costs B0'!$BG$73在单元格AD1中。

Sub PasteFormula()

    Dim CostColumns As Long
    Dim y As Long

    'Starting column for External Costs reference
    CostColumns = 1

    With ThisWorkbook.Worksheets("Sheet1")
        For y = 1 To 30
            .Cells(1, y).FormulaR1C1 = "='External Costs B0'!R73C" & CostColumns
            CostColumns = CostColumns + 2
        Next y
    End With

End Sub
  • 将代码更改Sheet1更新为您需要的工作表 公式出现在。
  • CostColumn=1更改为正确的列 您希望公式引用的数字。
  • y = 1 To 30更改为 您希望公式显示的正确列。

代码使用R1C1语法,因为如果您只需要处理行和放大,则更容易更新公式。列号 R 73 C 2是第73行,第2列。