Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA将数组值传递给预定义字符串_Vba_Excel_Loops_For Loop - Fatal编程技术网

VBA将数组值传递给预定义字符串

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”)” 但是,在下面

这是过去一个问题的延续:

作为我以前代码的改进版本,我很好奇如何将数组值分配给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”)”


谢谢你的帮助

像这样?使用字符和文本的公式部分归功于@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