我正在尝试在连续列的工作表的同一行中插入以下公式 ='外部成本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
答案 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列。