如何从单元格公式中仅获取引用ws名称

时间:2014-09-19 15:04:43

标签: vb.net vba

有没有人知道如何从此示例单元格公式中获取以下字符串,例如:

式: =主!A1:A10

通缉字符串: 主

我想用VB.net或VBA来做这件事。有什么方法可以做到这一点?我应该只使用字符串函数并应用条件,使其获得所需的输出?或者在vb.net中的excel interop中是否有函数可以让我这样做?

我只需要一些小代码片段。我将感激你的帮助!

2 个答案:

答案 0 :(得分:0)

为了让您入门,假设A1包含您的公式。

Sub test()
    Dim rng As Excel.Range
    Set rng = Excel.Range("$A$1")    
    Debug.Print rng.Precedents.Worksheet.Name    
End Sub

Precedents为您提供了单元格所依赖的Range。这可能是也可能不是连续的。 Range对象具有Worksheet属性(将其视为Range的父级),Name返回该工作表的名称。

优雅地,这不依赖于任何字符串解析。如果公式取决于多个工作表,您需要增强此功能,但这将帮助您入门。

答案 1 :(得分:0)

你可以使用这个我认为它会起作用:

dim SheetName as string
SheetName = mid(YourSheet.Range("A1").FormulaR1C1.split("!")(0),2)
if InStr(SheetName, "(") <0 then
    SheetName = split(SheetName,"(")(1)
end if

我希望这一改变能够满足你的需求。