2017-02-22 164 views
0

我正在修改一些代碼,添加了彙總表和成本計算表之間的鏈接。我試圖將下面的公式編碼到單元格C1中的每個CS工作表。 = CONCATENATE(SUMMARY!L9,「 - 」,SUMMARY!M9,「:」,SUMMARY!N9),其中行將改變。我在語法上遇到了麻煩。什麼是最簡單的方法來實現這一點?Excel VBA Coincatenate單元包含 - &:

以下(這幾乎是工作,但是沒有把所需的「入公式

Sub CSrefs() 
' 
' Adds links from Summary Sheet to CS Sheets: - Updated 29/09/15 PRS 

Dim i As Integer, iOffset As Integer, intCount As Integer 
Dim intCS1_Index As Integer, intCSCount As Integer, nonCSSheets As Integer 
Dim sFormulaText As String, sDash As String, sDots As String 

Application.ScreenUpdating = False 

    intCount = ActiveWorkbook.Sheets.Count  'Find total number of workbook sheets 
    intCS1_Index = Sheets("CS1").Index   'CS1 Sheet index 
    intCSCount = intCount - (intCS1_Index - 1) 'Find total number of CS sheets 
    nonCSSheets = intCount - intCSCount   'Find total number of Non-CS sheets 
    sDash = " - " 
    sDots = " : " 

For i = 1 To intCSCount 'number of sheets 

    iOffset = i + 8 'Start of Summary Sheet CS Rows 
     With Sheets("CS" & i) 
      sFormulaText = "=CONCATENATE(SUMMARY!L" & iOffset & "," & sDash & ",SUMMARY!M" & iOffset & "," & sDots & ",SUMMARY!N" & iOffset & ")" 
'   .Range("B1").Formula = sFormulaText 
      .Range("A1").Hyperlinks.Add Anchor:=.Range("A1"), Address:="", SubAddress:="Summary!D" & iOffset, TextToDisplay:="SUMMARY" 'Go to Summary Sheet hyperlink 
      .Range("A1").Font.Size = 8 
      .Range("G1").Formula = "=SUMMARY!O" & iOffset ' UOM 
      .Range("E1").Formula = "=SUMMARY!P" & iOffset 'SOR Qty 
      .Range("I1").Formula = "=SUMMARY!R" & iOffset 'Cable Average 
'   .Range("H10").Formula = "=SUMMARY!C" & iOffset 'Sage Code 
      .Range("N17").Formula = "=SUMMARY!AC" & iOffset 'Materials GP% 
      .Range("P17").Formula = "=SUMMARY!AP" & iOffset 'Materials MCD GP% 
      .Range("N42").Formula = "=SUMMARY!AD" & iOffset 'Misc GP% 
      .Range("P42").Formula = "=SUMMARY!AP" & iOffset 'Misc MCD GP% 
      .Range("N67").Formula = "=SUMMARY!AE" & iOffset 'Labour GP 
      .Range("P67").Formula = "=SUMMARY!AP" & iOffset 'Labour MCD GP% 
      .Range("N92").Formula = "=SUMMARY!AF" & iOffset '3rd Party GP% 
      .Range("P92").Formula = "=SUMMARY!AP" & iOffset '3rd Party MCD GP% 
      .Range("N117").Formula = "=SUMMARY!AG" & iOffset 'PM&PL GP% 
      .Range("P117").Formula = "=SUMMARY!AP" & iOffset 'PM&PL MCD GP% 
      .Range("N142").Formula = "=SUMMARY!AH" & iOffset 'Bond GP% 
      .Range("P142").Formula = "=SUMMARY!AP" & iOffset 'Bond MCD GP% 
      .Range("N152").Formula = "=SUMMARY!AG" & iOffset 'Support GP% 
      .Range("P152").Formula = "=SUMMARY!AP" & iOffset 'Support MCD GP% 
      .Range("N177").Formula = "=SUMMARY!AH" & iOffset 'Day Works GP% 
      .Range("P177").Formula = "=SUMMARY!AP" & iOffset 'Day Works MCD GP% 
     End With 

Next i 

    Sheets("Summary").Select 
    Application.ScreenUpdating = True 

End Sub 
+0

哪一行是有問題的?sF ormulaText'作業?最小化您在帖子中放置的代碼量通常是一個好主意。請注意,您應該從環境設置中獲取* list分隔符*字符,而不是對其進行硬編碼 - 如果* list分隔符*被更改爲除逗號以外的任何內容,則硬編碼逗號會導致代碼失敗運行這個宏的機器。 –

+0

謝謝@馬特杯。這是sFormulaText分配。我在哪裏可以找到你的原始答案? –

+0

問題頂部有一個鏈接。另外JiheL的回答是正確的,只是不是他的代碼(見我的評論)。 –

回答

1

使用雙引號內兩次雙引號作一個雙引號出現

sFormulaText = "=CONCATENATE(SUMMARY!L" & iOffset & ",""-"",SUMMARY!M" & iOffset & ", "":"",SUMMARY!N" & iOffset & ")" 

不知道代碼你需要雙引號和短劃線/點之間的空格,但你可以自己添加它:)

+0

Thanks @Jihel。我曾嘗試過,但是它出現了類型不匹配錯誤 –

+0

引號不匹配。應該是'sFormulaText =「= CONCATENATE(SUMMARY!L」&iOffset& 「,」「」 - 「」「,」SUMMARY!M「&iOffset&」,「」「:」「」,「SUMMARY!N」&iOffset&「)」' –

相關問題