VBA excel 2007使用条件传输Cell的值

时间:2013-02-08 15:53:58

标签: excel vba transfer

在工作表'hitterscalc'单元格d2中,如果'hitterscalc'单元格中的值ab2 = 1

,我想粘贴工作表'batters'单元格ks2的值

我认为想要对工作表'hitterscalc'中包含数据的所有行执行此操作

我想出了

With Worksheets("Hitterscalc")
    With .Range("d2:d" & .Range("a" & Rows.Count).End(xlUp).Row)
        .Formula = "=IF($AB2=1,Batters!KS2,""))"
        .Value = .Value
    End With
End With

但正在返回应用程序定义或对象定义的错误。

有人能指出我正确的方向来解决这个问题吗?

编辑:

所以当我做的时候

With Worksheets("Hitterscalc")
        With .Range("d2:d" & .Range("ab" & Rows.Count).End(xlUp).Row)
            .Formula = "=Batters!KS2"
            .Value = .Value
        End With
    End With

表达式正常。我怎样才能得到它以便它首先检查工作表hitterscalc列ab的单元格值?

编辑2

With Worksheets("Hitterscalc")
        With .Range("d2:d" & .Range("ab" & Rows.Count).End(xlUp).Row)
            .Formula = "=IF(AND(A2<>"""",AB2=1),Batters!KS2,"""")"
            '.Formula = "=Batters!KS2"
            .Value = .Value
        End With
    End With

的工作原理。我很困惑为什么这个有效,但不是第一个。

1 个答案:

答案 0 :(得分:0)

我认为混淆是因为引用 - 尝试使用此代码:

With Worksheets("Sheet1")
    With .Range("d2:d" & .Range("ab" & Rows.Count).End(xlUp).Row)
            r = "=IF($AB2=1,Batters!KS2," & Chr(34) & Chr(34) & ")"
            .Formula = r
            .Value = .Value
    End With
End With

使用Chr(34)IF中使用的双引号生成公式字符串。