2016-12-14 30 views
0

我一直在使用VBA了一段不同的工作表,現在我被困在這個問題上:如何輸入公式進入細胞,同時援引

說我有A,B,C,d,E ......在每個小區的工作表的名稱& &名稱匹配100%的每個工作表的名稱(工作表A,B,C ...)

那麼,如何使用VBA輸入到公式COL2,像='的形式SHEETNAME !'$ B $ 2(手機地址)? 內公式SHEETNAME相當於COL1(& &每個工作表的名稱)

通常只VBA返回值,但是我通過打印公式這個時候需要參考。

---- ---- COL1 COL2

R1-- A ='A!$ B $ 2

R2-- B ='B!$ B $ 2

R3-- C ='C!$ B $ 2

R4-- d ='d!$ B $ 2

[R .-- ... ='...!$ B $ 2

實際情況下,工作表nam e非常混亂,不像結構化字母& num,

您的建議非常感謝!謝謝!

我猜兩張照片可以說明我的問題更好:

overview worksheets

似乎我不能嵌入圖像yet..but反正... 所以我的目標是: 1.Get名稱來自名字(C)col。 2.在供應商(D)欄中填寫公式。 = '(在Col.C名)' $ B $ 2

!注意:在col.C名稱對應於工作表(圖片2)

*我原來的計劃是:

對於每個wrksheet在工作表中

If wrksheet.Index >= 10 Then 

     sheetname = wrksheet.Name #1 pass wrksheet's name into sheetname variable 
     sum.Cells(i, 4).formula = "='sheetname!'$B$2" #2 input current worksheet's cell(B2) and print into worksheet sum's cell(i,4) 

    End If 
    i=i+1 

但是,很明顯,這一招(#2)不工作.... 那麼,如何才能讓我的工作表的名稱後自動寫公式? 希望你明白這一點嗎?

========================================== 子公式( )

Dim s As Worksheet, w As Worksheet 
Set s = Worksheets("Summary") 
Dim i, stname 

i = 1 
For Each w In Worksheets 

    If w.Index > 1 Then 

     stname = w.Name 
     s.Cells(i, 4).formula = "=" & stname & "!$B$2" 


    End If 
    i = i + 1 
Next w 

末次

但代碼報告的問題......這是爲什麼?

+0

你能告訴我們一些代碼嗎?它使您更容易幫助您。 –

回答

0

很難理解你想問什麼,但我會盡我所能解決你的問題。將來,建議將代碼與您的問題一起列入。

要將公式輸入到單元格中,可以使用Range.Formula方法。這裏有一個很好的解釋: - https://msdn.microsoft.com/en-us/library/office/ff838835.aspx

然而,我的理解是,你正在尋找輸入公式作爲文本,以便您可以稍後參考它。最簡單的方法是使用Range.Value方法。這說明如下: - https://msdn.microsoft.com/en-us/library/office/ff195193.aspx

但是,如果你只是在格式=FORMULA公式插入Range.Value你會發現,Excel將其解釋爲一個公式,因此試圖以顯示其解決方案的價值。解決這個問題的最簡單方法是在公式中的等號之前加上撇號,如下所示: - '=FORMULA

這會強制Excel將公式僅解釋爲文本。該單元格將以可讀格式顯示您選擇的公式。因此,您的解決方案看起來像這樣: -

Cells(1,2).Value = "'='" & Cells(1,1).Value & "!'$B$2" 

藉助於此Cells(1,1)包含您的工作表的名稱,並Cells(1,2)將成爲你的參考公式。

爲了以後引用這個單元格並將它用作公式,您需要刪除我們剛剛添加的撇號。有很多方法可以做到這一點;如果你需要額外的幫助,請問。

+0

感謝您的建議「'='」&sheetname&「!'$ B $ 2」是正確的形式! – leveygao

+0

沒問題 - 很高興你把它分類! – Scarfe