Excel VBA:.Formula IF带variables – 如何插入引号?

感谢mirabeau @ Mrexcel原始的脚本。

原始代码的作用总结K列中的每个范围,并将总和加到最后

我想要它做什么取代sumif总和,只求和满足条件单元格的单元格,除非条件单元格包含“Bloomingdales *”。 那么整个范围应该总结。

我检查如果公式cell.offset(-4,-10)等于例外的问题。 然而,我有麻烦混合variables和string,甚至variables和variables。 理想情况下,应该检查e = Store还是e =“Bloomingdales *”。 代码将不会执行,或者我只能让它显示“e = store”,其中Excel无法解释VBAvariables。

我的尝试:

Sub addups() Dim e As Range, f As Range, g As Range, u As String, x As Range, Store As String Set e = Columns("K").Rows(2) 'any column and/or start row you like If e = "" Then Set e = e.End(4) Do Set g = e If e.Offset(1) <> "" Then Set e = e.End(4) u = Range(g, e).Address(0, 0) Set f = e.Offset(1) Set e = e.End(4) Set x = f.Offset(-4, -10) Store = "Bloomingdales*" f.Formula = "=IF("& x &" = "&Store&",Sum(" & u & "),Sumif(A:A," & x.Address & ", K:K))"'Error Loop Until e.Row = Rows.Count End Sub 

请让我知道,如果你需要更多的信息。 干杯!

build立@ Bathsheba的build议是另一种方法。 几个假设和几个错误修复。

这个小小的也产生的公式没有错误。

 Sub insForm() Dim x As Range, f As Range Dim Store As String, u As String, qm As String Store = "Bloomingdales" qm = Chr(34) u = "G3:G10" Set x = Columns("K").Rows(12).Offset(-4, -10) Set f = Range("B5") f.Formula = "=IF(" & x.Address & " = " & qm & Store & qm & ",Sum(" & u & "),Sumif(" & "C:C" & ", " & x.Address & ", " & "K:K" & "))" End Sub 

要在VBA中使用引号,您需要使用另一个引号将其转义

例如Store = """Bloomingdales"""将分配用引号括起来的string。

为了清楚起见,我倾向于定义一个常数

Public Const vbQuote As String = """"在我的模块之一。 然后我可以使用

Store = vbQuote & "Bloomingdales" & vbQuote

我发现更具可读性。