2017-02-16 86 views
0

如何從外部引用的單元格中的另一個工作表如何從外部引用的單元格中的另一個工作表拉工作表名稱

細胞B1在我的工作表WS1拉工作表名稱顯示從引用的單元格的值工作表中的RefCellWS2

如何顯示WS1內的單元格A1中存在哪個工作表RefCell

像這樣的東西是什麼,我需要發生:

__________________________________ 
|_______|___A____|___B____|___C____| 
|___1___|__Pets__|__Dog___|________| 
|___2___|__Fruit_|__Apple_|________| 

    *Column B contains referenced values from other worksheets (within the same workbook). 
    *The value in Column A detects the worksheet name of the value in Column B. 

可這在VBA可以實現嗎?它將如何實施?

回答

1

可以使用

Sub main() 
    Dim cell As Range 

    For Each cell In Range("B2", Cells(Rows.Count, 2).End(xlUp)).SpecialCells(xlCellTypeFormulas) '<--| loop through column B cells with formulas found from row 2 down to last not empty one 
     cell.Offset(, -1) = Split(Replace(cell.Formula, "=", ""), "!")(0) '<--| extract worksheet name out of current cell formula and write it in corresponding column A cell 
    Next 
End Sub 
+0

@SnookerFan,你試過這個解決方案嗎? – user3598756

+0

我將如何實施?你能完整地寫下來,以便我可以複製並粘貼到我的VBA編輯器來測試它嗎? – MusTheDataGuy

+0

請參閱編輯(和註釋)代碼。如果它解決了您的問題,請將此答案標記爲已接受。謝謝 – user3598756

0

由於參考存儲爲在細胞中的公式。

前的單元格B2將有=寵物的公式!refcell

所以你可以做的是讓公式使用INSTR funcion獲得表名稱和使用的長度左邊得到工作表名稱,並指定它的細胞

B_formaula= str(sheet1.range("B2").formula) 
st_name=left(B_formula,instr(1,B_formula,"!",vbbinarycompare)-1) 
sheet1.range("A2").value=st_name 

我希望這可以幫助。

sub st_name() 
dim ws as worksheet 
set ws=thisworkbook.sheets(1) 
irow=ws.range("B1:B"& rows.count).end(xlup).row 
for i = 1 to irow 
B_formaula= str(ws.range("B"& i).formula) 
st_name=left(B_formula,instr(1,B_formula,"!",vbbinarycompare)-1) 
ws.range("A"& i).value=st_name 
next i 
end sub 

這個子程序將檢查在B列中所有值從排1號至最後一行和工作表名稱添加到列A

我還沒有測試的代碼呢。嘗試代碼,如果任何錯誤恢復。

+0

這似乎可以工作,但我無法在VBA中實現它。它將如何寫入? (Function/Sub?) – MusTheDataGuy

+0

是在b列中已經有的值....還是應該使用vba複製它們? –

+0

這些值已經在列中(我使用了一個名爲Ranged的NamedRange)。我想要列A挑出列B中單元格的工作表值。 – MusTheDataGuy

相關問題