具有单元格范围的Excel IF语句

时间:2014-12-10 08:47:28

标签: excel excel-vba vba

我有一个范围FLrange,其中包含单元格C3:E10。我想检查每个单元格中的值,如果它是零,则需要运行公式SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,C$2)(这是单元格C3中的公式,其他单元格具有相对公式)

即,

C3:=SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,C$2)

D3:=SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,D$2)

E3:=SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,E$2)

C4:=SUMIFS(raw!$D:$D,raw!$A:$A,$A4,raw!$C:$C,C$2)

D5:=SUMIFS(raw!$D:$D,raw!$A:$A,$A4,raw!$C:$C,D$2)

等...

注意:如果您注意到上述内容,

在每一行中,它会在公式结束时改变,如C $ 2,D $ 2,E $ 2 在每一栏中,它会改变原始!$ A:$ A,$ A3,原始!$ A:$ A,$ A4,原始!$ A:$ A,$ A5等

我尝试过以下公式

Sub Macro1()
    Dim FLrange As Range
    Set FLrange = Range("C3:E10")

    For Each cell In FLrange
        If cell.Value = 0 Then cell.Formula = "SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,C$2)"
    Next cell
End Sub

但是,它在所有单元格中加载相同的公式,如何将其更改为相对的

2 个答案:

答案 0 :(得分:0)

R1C1范围格式适用于此。

而不是你的

cell.Formula = "SUMIFS(raw!$D:$D,raw!$A:$A,$A3,raw!$C:$C,C$2)"

使用

cell.FormulaR1C1 = "=SUMIFS(raw!C4,raw!C1,R[0]C1,raw!C3,R2C[0])"

请注意在=中添加= "=SUMIFS ...,必须将其作为公式输入

答案 1 :(得分:0)

如果我理解正确,你想要一个宏来填充上面的formalae。宏可以如下:

Sub Macro1()
        Dim FLrange As Range
        Set FLrange = Range("C3:E10")

        For Each cell In FLrange
            If cell.Value = 0 Then
                cell.Formula = "=SUMIFS(raw!$D:$D,raw!$A:$A,$A" & cell.Row & ",raw!$C:$C," _
                & ConvertToLetter(cell.Column) & "$2)"
            End If

        Next cell
End Sub

Function ConvertToLetter(iCol As Integer) As String
   Dim iAlpha As Integer
   Dim iRemainder As Integer
   iAlpha = Int(iCol / 27)
   iRemainder = iCol - (iAlpha * 26)
   If iAlpha > 0 Then
      ConvertToLetter = Chr(iAlpha + 64)
   End If
   If iRemainder > 0 Then
      ConvertToLetter = ConvertToLetter & Chr(iRemainder + 64)
   End If
End Function

然而,这可能是一个更优雅的解决方案!