我刚刚开始使用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
答案 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