2017-10-12 77 views
0

我試圖在連續列中的工作表的同一行中插入以下公式='External Costs B0'!F73,但工作表中的單元格引用爲「F73」 「外部成本」,指的交替列,例如F73,H73,J73,L73等插入引用替代列的Excel公式

這裏是與式電子表格的截屏評論

Screen Capture of formula sheet

這是我曾嘗試的代碼,但我正在努力想法如何獲得替代列參考工作。

Dim CostColumns As Long 

'選擇細胞開始從

Range("E26").Select 

插入式' 從塔開始F(6)中的 「外部成本B0」 片和步驟,以每隔柱

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 

回答

1

使用此:

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

但問題是,行(73)和列(CostColumns)都返回一個Range對象,你不能連接到一個字符串。

+0

謝謝了。這很有效,一旦有人用你的智慧指出它,解釋就顯而易見了。 – HobbyHacker

+0

@HobbyHacker,我給出的解決方案是作爲一個快速修復。查看其他答案,瞭解最佳做法。 – Mahesh

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 

PS:添加工作簿和工作表的名稱,如'='和'R'之間的任何其他公式['

+0

謝謝@Jochen這提供了一個很大的靈活性,感謝您的意見 – HobbyHacker

1

此代碼將您的公式放置在單元格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是第73行,第2列。