修复阻止如果没有结束如果错误

时间:2015-05-20 19:02:38

标签: vba excel-vba if-statement excel

我刚刚开始使用Macros和VB,但对Excel公式有一些经验。我的问题是我的excel公式变得非常冗长和复杂,我认为VB可以帮助我。

我有很多财务数据,我想在一个专栏中分类。我的第一步是将特定公司归类为私营公司或权证。我得到一个'阻止如果没有结束'如果'错误与下面的代码。我尝试过各种各样的东西,但没有运气。

    Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company B" Then
    Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company C" Then
    Range("F2:F400") = "Private Company"
Else If Range("A2:A400") = "Company D" Then
    Range("F2:F400") = "Warrant"
Else If Range("A2:A400") = "Company E" Then
    Range("F2:F400") = "Warrant"
Else If Range("A2:A400") = "Company F" Then
    Range("F2:F400") = "Warrant"
End If

End Sub

3 个答案:

答案 0 :(得分:0)

您可以在If ... End If子句中嵌套新的Else,也可以使用ElseIf版本(没有空格)。对于前者,您的代码需要是:

If Range("A2:A400") = "Company A" Then 
    Range("F2:F400") = "Private Company" 
Else 
    If Range("A2:A400") = "Company B" Then 
        Range("F2:F400") = "Private Company" 
    Else 
        If Range("A2:A400") = "Company C" Then 
            Range("F2:F400") = "Private Company" 
        Else 
            If Range("A2:A400") = "Company D" Then 
                Range("F2:F400") = "Warrant" 
            Else 
                If Range("A2:A400") = "Company E" Then 
                    Range("F2:F400") = "Warrant" 
                Else 
                    If Range("A2:A400") = "Company F" Then 
                        Range("F2:F400") = "Warrant" 
                    End If
                End If
            End If
        End If
    End If
End If

为便于阅读而添加了缩进。

此外,您还需要测试范围内的每个细胞" A2:A400"分别。像:

For Each cell In Range("A2:A400")
    If cell.Value = "" Then
    Else
        ...
    End If
Next cell

一个更简单的方法可能是创建公司名称的查找表,无论是私有还是授权,然后在电子表格中创建VLOOKUP函数。

答案 1 :(得分:0)

在VBA中,Else If是嵌套条件,其中ElseIf是级联的:

试试这个:

If Range("A2:A400") = "Company A" Then
    Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company B" Then
    Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company C" Then
    Range("F2:F400") = "Private Company"
ElseIf Range("A2:A400") = "Company D" Then
    Range("F2:F400") = "Warrant"
ElseIf Range("A2:A400") = "Company E" Then
    Range("F2:F400") = "Warrant"
ElseIf Range("A2:A400") = "Company F" Then
    Range("F2:F400") = "Warrant"
End If

答案 2 :(得分:0)

我还想补充一下你可以使用(这只是ChipsLetten扩展了一下,所以你可以看看它是如何工作的)

Sub ColumnLoop()

    Dim rng As Range
    Set rng = Range("A2:A400")
            For Each cell In rng
                Debug.Print cell.Address
                    If (cell.Value = "Company A" Or cell.Value = "Company B" Or cell.Value = "Company B") Then
                       cell.Offset(0, 5).Value = "Private"
                        Debug.Print cell.Address
                    Else
                        cell.Offset(0, 5).Value = "Warrant"
                         Debug.Print cell.Address
                    End If
                Next cell

End Sub