【发布时间】:2017-08-09 14:34:59
【问题描述】:
我正在尝试将 IF 语句放置在第 2 行的下一个可用列(动态)中。一旦 IF 语句位于该单元格中,我想从该单元格中添加最后使用的行(动态)中的值柱子。我一直无法将 IF 语句编码到 VBA 中。我还需要对其进行编码的帮助,以便使用 IF 语句将列中的最后一行添加到单元格中。到目前为止,这是我的代码:
Sub vlookupF5()
Dim SourceLastRow As Long
Dim OutputLastRow As Long
Dim sourceSheet As Worksheet
Dim outputSheet As Worksheet
Dim NextColumn As Long
Dim ColumnStr As String
Dim ColumnStr2 As String
Dim ColumnStr3 As String
Set sourceSheet = Worksheets("Actuals")
Set outputSheet = Worksheets("Pivot")
With sourceSheet
SourceLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
With outputSheet
NextColumn = .Cells(2, Columns.Count).End(xlToLeft).Column + 1
If NextColumn + 1 < 27 Then
ColumnStr = Chr(64 + NextColumn + 1)
Else
ColumnStr = Chr(64 + Int((NextColumn + 1) / 26)) & Chr(64 + ((NextColumn + 1) Mod 26))
End If
If NextColumn - 1 < 27 Then
ColumnStr3 = Chr(64 + NextColumn - 1)
Else
ColumnStr3 = Chr(64 + Int((NextColumn - 1) / 26)) & Chr(64 + ((NextColumn - 1) Mod 26))
End If
If NextColumn < 27 Then
ColumnStr2 = Chr(64 + NextColumn)
Else
ColumnStr2 = Chr(64 + Int((NextColumn) / 26)) & Chr(64 + ((NextColumn) Mod 26))
End If
OutputLastRow = .Cells(.Rows.Count, "D").End(xlUp).Row - 1
Worksheets("Pivot").Activate
.Range(Cells(2, NextColumn), .Cells(2, NextColumn)).Formula = _
"=IF(R3C5=""Feb"",Actuals!R133C22,IF(R3C5=""Mar"",SUM(Actuals!R133C22:R133C600),IF(R3C5=""Apr"",SUM(Actuals!R133C22:R133C24),IF(R3C5=""May"",SUM(Actuals!R133C22:R133C25),IF(R3C5=""Jun"",SUM(Actuals!R133C22:R133C26),IF(R3C5=""Jul"",SUM(Actuals!R133C22:R133C27),IF(R3C5=""Aug"",SUM(Actuals!R133C22:R133C28),IF(R3C5=""sep"",SUM(Actuals!R133C22:R133C29),IF(R3C5=""Oct"",SUM" & _
"!R133C22:R133C30),IF(R3C5=""Nov"",SUM(Actuals!R133C22:R133C31),IF(R3C5=""Dec"",SUM(Actuals!R133C22:R133C32),"""")))))))))))" * .Cells(OutputLastRow, NextColumn)
End With
End Sub
我一直在努力
“错误 13:类型不匹配”
对于这一行:
"=IF(R3C5=""Feb"",Actuals!R133C22,IF(R3C5=""Mar"",SUM(Actuals!R133C22:R133C600),IF(R3C5=""Apr"",SUM(Actuals!R133C22:R133C24),IF(R3C5=""May"",SUM(Actuals!R133C22:R133C25),IF(R3C5=""Jun"",SUM(Actuals!R133C22:R133C26),IF(R3C5=""Jul"",SUM(Actuals!R133C22:R133C27),IF(R3C5=""Aug"",SUM(Actuals!R133C22:R133C28),IF(R3C5=""sep"",SUM(Actuals!R133C22:R133C29),IF(R3C5=""Oct"",SUM" & _
"!R133C22:R133C30),IF(R3C5=""Nov"",SUM(Actuals!R133C22:R133C31),IF(R3C5=""Dec"",SUM(Actuals!R133C22:R133C32),"""")))))))))))" + .Cells(OutputLastRow, NextColumn)
谁能帮忙??
【问题讨论】:
-
您是否尝试过在您的月份周围使用单引号而不是双引号?以您的方式进行操作会导致 VBA 认为
Feb是某种未正确连接的变量。 -
你能详细说明你的脚本是如何没有按预期工作的吗?
-
@nbayly 我已经更新了这个问题。我收到错误 13:当我尝试将 if 函数放入时类型不匹配
-
这样......
"=IF(R3C5='Feb',A -
您需要使用另一组双引号对公式中的双引号进行转义。例如。
SomeCell.Formula = "=IF$E$3=""Feb"",RestOfFormulaHere"
标签: vba excel if-statement