我在Excel中有一张表。我添加列并命名它们。代码适用于单元格引用。但是,如果我使用Range(“tablename [columnname]”),我添加公式时会出错。
第一部分工作正常。我可以添加colums并命名它们。
Sub insertTableColumn()
Dim lst As ListObject
Dim currentSht As Worksheet
'The below add columns on a table and rename them
Set currentSht = ActiveWorkbook.Sheets("FBL5NSheet")
Set lst = ActiveSheet.ListObjects("FBL5NTable")
ColumnNames = Array("FBL5NDocNrCalc", "FBL5NRefCalc", "FBL5NDocNrCalcCut")
For iLoop = 0 To UBound(ColumnNames)
Set oLC = lst.ListColumns.Add
oLC.Name = ColumnNames(iLoop)
Next
End Sub
我对第二部分有疑问。它适用于单元格引用。但不是
Range("tablename[columnname]").
我尝试了以下操作,但我收到了错误。
Range("FBL5N[FBL5NDocNrCalc]").Formula = "=IF(("FBL5N[FBL5NDocNr"]) <> ""),("FBL5N[FBL5NDocNr]") & ("FBL5N[FBL5NCcode]") & ("FBL5N[FBL5NTradingPartner]") & ("FBL5N[FBL5NDocCur]")), "")"
以下代码使用单元格引用。如果我使用表格引用我得到一个错误。如何使用Range(“tablename [columnname]”)
执行以下操作Sub FillCalculainInColumn()
'enter formulas
Range("O2").FormulaR1C1 = _
"=IF([@FBL5NDocNr]<>"""",([@FBL5NDocNr]*1&[@FBL5NCcode]&[@FBL5NTradingPartner]&[@FBL5NDocCur]),"""")"
Range("P2").FormulaR1C1 = _
"=IF([@FBL5NRef]<>"""",([@FBL5NRef]*1&[@FBL5NCcode]&[@FBL5NTradingPartner]&[@FBL5NDocCur]),"""")"
Range("Q2").FormulaR1C1 = "=RIGHT([@[FBL5NDocNrCalc ]],18)"
'fill formulas to last row
Range("O2:Q2").AutoFill Destination:=Range("O2:Q" & Cells(Rows.Count, "A").End(xlUp).Row)
End Sub
我只做以下,我得到一个错误,我想知道我是否需要更多
Sub FillCalculainInColumn()
范围(“FBL5N [FBL5NDocNrCalc]”)。公式= _“= IF(FBL5N [FBL5NDocNr]&lt;&gt;”“”“,CONCATENATE(FBL5N [FBL5NDocNr],F BL5N [FBL5NCcode],FBL 5N [FBL5NTradingPartn er],FBL5N [FBL5NDocCu r]),“”“”)“
End Sub
答案 0 :(得分:0)
我觉得你的引号到处都是(并且在错误的地方):
Range("FBL5N[FBL5NDocNrCalc]").Formula = _
"=IF(("FBL5N[FBL5NDocNr"]) <> ""),("FBL5N[FBL5NDocNr]")&"FBL5N[FBL5NCcode]")&("FBL5N[FBL5NTradingPartner]")&("FBL5N[FBL5NDocCur]")), "")"
例如,如果我们只关注这一个组件:
"FBL5N[FBL5NDocNr"]
很明显,这是不平衡的,因为你在结束时有一个,这几乎肯定是一个错误。
我不确定你在这种情况下甚至都需要引号,未经测试,但请尝试:
Range("FBL5N[FBL5NDocNrCalc]").Formula = _
"=IF(FBL5N[FBL5NDocNr]<>"""",FBL5N[FBL5NDocNr]&FBL5N[FBL5NCcode]&FBL5N[FBL5NTradingPartner]&FBL5N[FBL5NDocCur], """")"
你需要在某些地方加倍引号(无论你在公式字符串中表示空字符串 ),并在其他地方(你所指的地方)省略引号表格列)。我也认为你不需要围绕每个列名称的括号。
使用CONCATENATE
也可能更清晰:
Range("FBL5N[FBL5NDocNrCalc]").Formula = _
"=IF(FBL5N[FBL5NDocNr]<>"""",CONCATENATE(FBL5N[FBL5NDocNr],FBL5N[FBL5NCcode],FBL5N[FBL5NTradingPartner],FBL5N[FBL5NDocCur]),"""")"