2016-07-18 46 views
0

让我试图更清晰:有没有办法使用来自某个单元格(已使用该表单填充)的表单名称来填充另一个单元格?

Here's an image that illustrates what I'm trying to do.

从本质上讲,我的目标是有一个公式,我可以把到单元格A2(或宏,如果需要的话),将插入的名称单元格B2来自的表单。在这种情况下,这将是Sheet2。我已经通过宏录像机尝试了一下,但是我没有能够按照我想要的方式得到任何东西。

理想情况下,我可以选择一个单元格(在这种情况下,单元格A2),并激活一个宏或将一个公式填入该单元格(A2)的表格中,该单元格位于右侧它(B2)来自。

非常感谢您的帮助,任何有关我应该如何使用的指导或如何能够做到这一点将非常感激。

+1

式可以比更复杂的,或它永远是一种单细胞链路?它是否可以指向不同工作簿中的单元格? –

+0

我现在拥有的数据虽然有很多**,但并没有比这更复杂。我真的只需要一种方法来将附近单元格的“源”表单转换为选定单元格显示的文本,如果有意义的话。 –

+0

我现在正在尝试将公式转换为文本,然后切断该字符串的开始和结尾以获取工作表名称。然而,这不起作用,因为我喜欢它,因为具有字符串名称的单元格的公式有时在开始和结束时具有不同数量的字符,这是由于某些引用超过了10, 10,以及一些细胞在其配方开始时有 - 符号。 –

回答

0

这里是一个UDF,它将拉动简单=SheetX!RANGE公式的表名称。它也会提示是否有多个工作表参考或根本没有。

放置这在标准的模块,并在细胞类型=ReturnSheet(B2)

Function ReturnSheet(rng As Range) As String 

    Dim sFormula As String 
    sFormula = rng.Formula 

    If InStr(1, sFormula, "!") = 0 Then 

     Dim sSheet As String 
     sSheet = "No sheet precedents found!" 

    Else 

     If UBound(Split(sFormula, "!")) = 1 Then 


      sSheet = Mid(sFormula, 2, InStr(1, sFormula, "!") - 2) 

     Else 

      sSheet = "Multiple Sheet precendents!" 

     End If 

    End If 

    ReturnSheet = Replace(sSheet,"'","") 'replace single quote in sheet names that has spaces 

End Function 
+0

谢谢!完美的作品,非常有帮助。 –

+1

带空格的表名将用单引号括起来,因此您可能需要对其进行调整。 –

相关问题