-2

有人可以帮我转义函数中的变量吗?我不明白:

Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(Rawdata!K2:K" & maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";""bezahlt"";Rawdata!A2:A" & maxnumrows & ";"">= "&DATWERT(""& weekstart &" 00:00")";Rawdata!A2:A" & maxnumrows & ";""<= "&DATWERT(""& weekend & " 23:59"))

编辑硬编码的工作公式是这样的:

=SUMMEWENNS(Rawdata!K2:K3446;Rawdata!I2:I3446;"bezahlt";Rawdata!A2:A3446;">="&DATWERT("18.03.2013 00:00");Rawdata!A2:A3446;"<="&DATWERT("24.03.2013 23:59"))

我只想为日期插入变量

"18.03.2013 00:00" => weekstart &" 00:00"
"24.03.2013 23:59" => weekend & " 23:59"
4

2 回答 2

1

根据我使用 VBA 和设置单元格公式的经验,切勿背靠背使用双引号。相反,使用 chr(34) 来表示现有双引号内的双引号。因此,公式中每个背靠背有双引号的地方都应该被替换。

IE

";""bezahlt"

应该改为

";" & chr(34) & "bezahlt" & chr(34)

所以对于你的公式,试试这个:

Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(Rawdata!K2:K" & maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";" & chr(34) & "bezahlt" & chr(34) & ";Rawdata!A2:A" & maxnumrows & ";>= " & DATWERT & "(" & weekstart & " 23:59);Rawdata!A2:A" & maxnumrows & ";<= " & DATWERT & "(" & weekend & " 23:59))"
于 2013-06-07T15:29:45.237 回答
0

正如 rwisch45 所指出的,使用 chr(34) 比尝试转义双引号要好得多,这涉及以不可避免的混乱方式添加额外的双引号。

不过,我确实想建议对公式进行修改。由于您有兴趣在特定日期值上调节 SUMWESSENS,因此在 VBA 级别继续评估它们是有意义的,而不是尝试为此目的复制硬编码公式。我提供了两个版本的公式:一个在 VBA 中进行日期计算,另一个复制您的硬编码版本,并在工作表中进行日期计算。

另一个变化。由于我发现 Chr(34) 使用起来有点混乱,所以我引入了一个替代变量“qq”。除非出现拼写错误,否则以下公式应该非常接近您的需要。

VBA中的日期计算

  qq = Chr(34)
  Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(RawData!K2:K" & _
                 maxnumrows & ";Rawdata!I2:I" & maxnumrows & ";" & qq & _
                 "bezahlt" & qq & ";Rawdata!A2:A" & maxnumrows & ";" & _
                 qq & ">=" & DATWERT(weekstart & " 00:00") * 1 & qq & _
                 ";RawData!A2:A" & maxnumrows & ";" & qq & "<=" & _
                 DATWERT(weekend & " 23:59") * 1 & qq & ")"

工作表中的日期计算

  qq = Chr(34)
  Cells(5, fieldextsales).FormulaLocal = "=SUMMEWENNS(RawData!K2:K" & _
                maxnumrows & ",RawData!I2:I" & _
                maxnumrows & "," & qq & "bezahlt" & qq & ",RawData!A2:A" & _
                maxnumrows & "," & qq & ">=" & qq & "&DATWERT(" & qq & _
                weekstart & " 00:00" & qq & ")" & ",RawData!A2:A" & _
                maxnumrows & "," & qq & "<=" & qq & _
                "&DATWERT(" & qq & weekend & " 23:59" & qq & "))"
于 2013-06-09T04:59:46.360 回答