【问题标题】:How to input formula into cells while citing different worksheets如何在引用不同的工作表时将公式输入到单元格中
【发布时间】:2017-04-29 07:36:38
【问题描述】:

我使用 VBA 已经有一段时间了,现在我陷入了这个问题:

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

那么如何使用 VBA 将公式输入到 COL2 中,如 ='sheetname!'$B$2(Cell address) 这样的形式? 公式里面的sheetname对应COL1(&&每个工作表的名字)

通常 VBA 只返回值,但这次我需要 REFERENCE 打印公式。

----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.从 Name(C) col 中获取名称。 2.将公式写在Supplier(D) col。 ='(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" #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$2"


    End If
    i = i + 1
Next w

结束子

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

【问题讨论】:

  • 你能给我们看一些代码吗?它使帮助您变得更容易。

标签: excel excel-formula worksheet-function worksheet vba


【解决方案1】:

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

要将公式输入到单元格中,您可以使用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$2"

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

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

【讨论】:

  • 感谢您的建议 "'='" & sheetname & "!'$B$2" 是正确的形式!
  • 没问题 - 很高兴你把它整理好了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2018-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多