2017-02-16 60 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

相关问题