如何在引用不同工作表时将公式输入单元格

How to input formula into cells while citing different worksheets

我已经使用 VBA 一段时间了,现在我被困在这个问题上:

假设我在每个单元格中都有 A、B、C、D、E... 作为工作表的名称&&该名称与每个工作表的名称 100% 匹配(工作表 A、B、C...)

那么如何使用VBA将公式输入COL2,如='sheetname!'$B$2(单元格地址)? 公式里面的sheetname对应COL1(&&每个工作表的名字)

通常 VBA returns 只是值,但这次我需要通过打印公式来参考。

----COL1----COL2

R1--A ='A!'$B$2

R2-- B ='B!'$B$2

R3-- C ='C!'$B$2

R4--D ='D!'$B$2

R.-- ... ='...!'$B$2

实际工作表名称很乱,不像结构化的字母&数字,

非常感谢您的建议!谢谢!

我想两张图能更好地说明我的问题:

overview worksheets

我好像还不能嵌入图片..但无论如何... 所以我的目标是: 1.Get 来自 Name(C) col 的名字。 2.Write Supplier(D) 列中的公式。 ='(名字在 Col.C)'!$B$2

注:col.C中的名称对应工作表。(图2)

*我原计划是:

对于工作表中的每个工作表

    If wrksheet.Index >= 10  Then

        sheetname = wrksheet.Name #1 pass wrksheet's name into sheetname variable
        sum.Cells(i, 4).formula = "='sheetname!'$B" #2 input current worksheet's cell(B2) and print into worksheet sum's cell(i,4)

    End If
    i=i+1

但是,显然,这个技巧 (#2) 不起作用.... 那么如何在获取工作表名称后自动编写公式呢? 希望你们清楚这一点?

========================================== 子公式()

Dim s As Worksheet, w As Worksheet
Set s = Worksheets("Summary")
Dim i, stname

i = 1
For Each w In Worksheets

    If w.Index > 1 Then

        stname = w.Name
        s.Cells(i, 4).formula = "=" & stname & "!$B"


    End If
    i = i + 1
Next w

结束子

但是代码报告问题...这是为什么?

很难理解你想问的问题,但我会尽力解决你的问题。将来,建议在您的问题中包含代码。

要将公式输入单元格,可以使用Range.Formula方法。这里有一个关于它如何工作的很好的解释:- https://msdn.microsoft.com/en-us/library/office/ff838835.aspx

不过,据我了解,您希望将公式作为文本输入,以便日后参考。最简单的方法是使用 Range.Value 方法。此处对此进行了描述:- https://msdn.microsoft.com/en-us/library/office/ff195193.aspx

但是,如果您只是将格式为 =FORMULA 的公式插入到 Range.Value 中,您会发现 Excel 会将其解释为公式并因此尝试显示值它的解决方案。解决这个问题的最简单方法是在公式中的等号前添加一个撇号,如下所示:- '=FORMULA

这会强制 Excel 将公式解释为纯文本。该单元格将以可读格式显示您选择的公式。因此,您的解决方案将如下所示:-

Cells(1,2).Value = "'='" & Cells(1,1).Value & "!'$B"

其中 Cells(1,1) 包含您的工作表名称,而 Cells(1,2) 将成为您的参考公式。

要稍后引用此单元格并将其用作公式,您需要删除我们刚刚添加的撇号。有多种方法可以做到这一点;如果您需要其他帮助,请直接询问。