【发布时间】:2020-08-13 15:55:08
【问题描述】:
所以我需要转到每一行,根据可能的付款人列表评估字符串,然后返回该特定付款人的公式。但是我不断收到错误,有人可以帮我弄清楚我的代码有什么问题吗?我是编程新手,无法弄清楚问题所在。
Sub CkNoConcatenate()
'
' CkNoConcatenate Macro
'
'
Dim x As Range, y As Range, c As String
rnumbers = Rows(ActiveCell.Range("A2").End(xlDown))
Set x = ActiveSheet.Range("AL2:AL3000")
Set y = ActiveSheet.Range("AS2:AS3000")
For Each cell In x
If c Is "AETNA A04" Or "AETNA AS01" Or "AETNA H09" Or "CIGNA" Or "HUMANA AHP" Or "HUMANA INS CO" Or "HWHO" Or "HHP" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],15))"
ElseIf c = "AARP SUPPLEMENTA" Or "ANTHEM BLUE IN5C" Or "ANTHEM BLUE IN5F" Or "ANTHEM BLUE O5C" Or "HUMANA GOVT BUSI" Or "MARKETPLACE" Or "MCRIN CLAIMS" Or "OPTUM VA CCN REG" Or "WISCONSIN PHYSIC" Or "UNITEDHEALTHCARE" Or "MANAGED HEALTH" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],10))"
ElseIf c = "CIGNA EDGE TRANS" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],12))"
ElseIf c = "GERBER LIFE INS" Or "GPM HEALTH INS" Or "MUTUAL OF OMAHA" Or "OMAHA INS CO" Or "UNITED OF OMAHA" Or "UNITED WORLD" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],28))"
ElseIf c = "GOLDEN RULE INSU" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],13))"
ElseIf c = "WPS" Or "HNB - ECHO" Or "UHC GOVERNMENT E" Or "UMR" Or "UMR CITY OF HEND" Or "UMR COMPASS ROSE" Or "UMR FREEDOM MORT" Or "UMR NRECA" Or "UMR PEDCOR MANAG" Or "UMR SMC CORPORAT" Or "UNITED BEHAVIORA" Or "UMR THE CHRISTIA" Or "UMR WABASH NATIO" Then
y = FormulaR1C1 = "=CONCATENATE(RC[-7],"" - "",LEFT(RC[4],9))"
Else: y = x
End If
Next cell
End Sub
【问题讨论】:
-
而不是
If c Is "AETNA A04" Or "AETNA AS01" ...使用If c.Value = "AETNA A04" Or c.Value = "AETNA AS01" ...。Is和Or都不像您认为的那样工作。y = FormulaR1C1 =也没有意义。也许您的意思是y.FormulaR1C1 =,尽管我怀疑您的意图是为整个范围设置该公式y。 -
我不相信 VBA 支持多重赋值:
y = FormulaR1C1 = ... -
变量
FormulaR1C1在哪里声明? -
由于
y是一个范围AS2:AS3000,因此您将公式设置为该范围内的所有单元格。这是你想要的吗? -
我怀疑你的意思是
y = x。我并不是说听起来粗鲁,但通过 VBA 的书籍或教程可能会有所帮助。该代码似乎是您在反复试验而不是在首先基本了解 Excel VBA 的语法和语义之后开发它。把这段代码放在一边,花几天时间学习基础知识,从长远来看可能会节省时间。
标签: vba loops if-statement