如何从另一个工作表中的外部引用单元格中提取工作表名称
我的工作表B1
中的单元格WS1
显示工作表RefCell
中引用的单元格WS2
的值。
如何在RefCell
中的单元格A1
中显示哪个工作表WS1
?
这样的事情就是我需要发生的事情:
__________________________________
|_______|___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中实现吗?如何实施?
答案 0 :(得分: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
答案 1 :(得分:0)
因为引用在单元格中存储为公式。
从细胞B2开始,它的公式为= pets!refcell所以你可以做的是让公式使用instr funcion来获取工作表名称的长度,并使用left来获取工作表名称并将其分配给单元格
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列。
我还没有测试过代码。如果有任何错误还原,请尝试使用该代码。