VBA将数组值传递给预定义字符串
这是过去一个问题的延续: 作为我以前代码的改进版本,我很好奇如何将数组值分配给strFormulas(2)。我尝试使用下面的循环将数组分配给循环到达的每个图纸 我希望实现: 表1和表2是同一工作簿中的单独工作表 如果循环落在表1上(表索引=2),则strFormulas(2)=“如果('Table 1s'!N1838=“S”,“S”,“S”)” 如果循环落在表2中(表索引=3),则strFormulas(2)=“如果('Table 2 S'!N1838=“S”,“S”,“S”)” 但是,在下面的循环中,nT不会被数组nTable中的值替换。它作为字符串结转并生成公式->“=IF(nT!N1838=“S”、“S”、“S”)”VBA将数组值传递给预定义字符串,vba,excel,loops,for-loop,Vba,Excel,Loops,For Loop,这是过去一个问题的延续: 作为我以前代码的改进版本,我很好奇如何将数组值分配给strFormulas(2)。我尝试使用下面的循环将数组分配给循环到达的每个图纸 我希望实现: 表1和表2是同一工作簿中的单独工作表 如果循环落在表1上(表索引=2),则strFormulas(2)=“如果('Table 1s'!N1838=“S”,“S”,“S”)” 如果循环落在表2中(表索引=3),则strFormulas(2)=“如果('Table 2 S'!N1838=“S”,“S”,“S”)” 但是,在下面
谢谢你的帮助 像这样?使用字符和文本的公式部分归功于@Jeeped
Public Sub AddFormulas()
Dim nTable As Variant, w As Long
Application.ScreenUpdating = False
nTable = Array("Table 1", "Table 2") 'assumes these exist otherwise needs error handling
For w = LBound(nTable) To UBound(nTable)
With ActiveWorkbook.Worksheets(nTable(w))
.Range("AK2:AR2000").Formula = "=IF('" & .Name & " S'!N1838=char(83), char(83), text(,))
End With
Next w
Application.ScreenUpdating = True
End Sub
每张纸只有一张桌子吗?这些表格是实际的Excel表格,而不仅仅是范围吗?你把公式放在桌子的什么地方?在所有列中?@QHarr表1是一张表,表2是另一张表。这里的表格是图纸名称。我把公式放在已经为strFormula(2)定义的范围内,即从AK列到AR列。噢,哇,我稍后会测试它,但我想这就是我要寻找的。我对VBA太陌生了,有太多的技巧。我还没有测试代码,周末很忙,我会让你知道它是否有效。。今天晚些时候。非常感谢。S由其Char()引用。如果你在“表2”中加一个S!例如N1838,您将看到它出现。如何在表1和表2之后添加“S”?这是解决方案中的输入错误吗?我可以把它添加到数组中吗?我并没有试图获取循环到达的当前表的名称。表1将参考公式中的表1s。。很抱歉,您之前的评论太快了,我现在正在尝试..插入的公式,例如在表1工作表中是=IF('Table 1'!N1838=CHAR(83),CHAR(83),TEXT(,),它与=IF('Table 1'!N1838=“S”,“S”,“S”)相同。您可以通过在N1838中输入“S”进行测试,然后以AK2为例进行测试。
Public Sub AddFormulas()
Dim nTable As Variant, w As Long
Application.ScreenUpdating = False
nTable = Array("Table 1", "Table 2") 'assumes these exist otherwise needs error handling
For w = LBound(nTable) To UBound(nTable)
With ActiveWorkbook.Worksheets(nTable(w))
.Range("AK2:AR2000").Formula = "=IF('" & .Name & " S'!N1838=char(83), char(83), text(,))
End With
Next w
Application.ScreenUpdating = True
End Sub