Excel VBA-仅将某些行添加到数组中,然后打印这些值

Excel VBA-仅将某些行添加到数组中,然后打印这些值,excel,vba,Excel,Vba,我正在学习一些VBA来完成我的任务,所以我可能会问多个问题,但首先 如果我有一个包含行和列的数据表,有些行在B列中有SA,有些行在B列中有SI,那么我需要7或9中的数据,具体取决于B列和11列中的值 我目前的情况如下 Dim SA, SI SA = Evaluate("=IF(2="SA"), 9, 11") SI = Evaluate("=IF(2="SI"), 7, 11") End Sub 当我这样做的时候,我得到了一个关于语法的错误 为了

我正在学习一些VBA来完成我的任务,所以我可能会问多个问题,但首先

如果我有一个包含行和列的数据表,有些行在B列中有SA,有些行在B列中有SI,那么我需要7或9中的数据,具体取决于B列和11列中的值

我目前的情况如下

Dim SA, SI
            SA = Evaluate("=IF(2="SA"), 9, 11")
            SI = Evaluate("=IF(2="SI"), 7, 11")
End Sub
当我这样做的时候,我得到了一个关于语法的错误

为了确保正确的数据被复制,我还试图将这些相应的数组打印到其他纸张上

Sub PrintTest()
    Dim SA() As Variant
    Dim SI() As Variant
    ReDim SA(1 To 3, 1 To 3)
    PrintArray SA, ActiveWorkbook.Worksheets("Sheet2").[A1]
End Sub
这一切都在一个按钮下,看起来像这样

Private Sub CommandButton1_Click()

Dim SA, SI, R&, C%
            SA = Evaluate("=IF(2="SA"), 9, 11")
            SI = Evaluate("=IF(2="SI"), 7, 11")
    With ActiveSheet.UsedRange
End Sub

Sub Test()
    Dim SA() As Variant
    Dim SI() As Variant
    ReDim SA(1 To 3, 1 To 3) ' make it flexible
    PrintArray SA, ActiveWorkbook.Worksheets("Sheet2").[A1]
End Sub

非常感谢您的帮助。

在中添加此变量时,您需要将其添加到评估字符串中

SA = Evaluate("=IF(2="SA"), 9, 11") 
需要

SA = Evaluate("=IF(2="+SA+"), 9, 11")

啊,我明白了,我错了!最后我用了另一种方法。Dim Ary作为变量Dim Sa()作为变量,Si()作为变量Dim r作为Long,i作为Long,j作为Long Ary=ActiveSheet.UsedRange i=1:j=1表示r=1到UBound(Ary)如果Ary(r,2)=“Sa”,则ReDim Preserve Sa(1到2,1到i)Sa(1,i)=Ary(r,9)Sa(2,i)=Ary(r,11)i=i+1其他Ary(r,2)=“SI”然后ReDim Preserve SI(1到2,1到j)SI(1,j)=Ary(r,7)SI(2,j)=Ary(r,11)j=j+1 End如果下一个r