显示数组中的一些值VBA excel

我试图根据第一行和第一列在我的Excel文件中显示多个值。 我已经为我的价值做了一个二维数组。 MyValue是一个InputBoxvariables,我遍历第一列试图findMyValue,我想获得在“ PSC ”,“ BCCH ”等列上的显示值,基本上与基于第一列的filter但只显示其他列的一些值。 我有这个操作的输出是在这个图像中: 在这里输入图像说明

然而,136,144和152是PSC值是在我的源Excel文件中的第2,3,4行,我不知道这些零是什么。 我想要将这些值互相叠加,我尝试了无偏移量方法,但如果我不使用它,则不会显示任何值。

 Dim1 = wSht.Range("A2", wSht.Range("A1").End(xlDown)).Cells.Count Dim2 = wSht.Range("A1", wSht.Range("A1").End(xlToRight)).Cells.Count For i = 1 To Dim1 For j = 1 To Dim2 If wSht.Cells(i, 1) = MyValue Then If wSht.Cells(1, j) = "PSC" Then ReDim Preserve Matrice(0 To 5, 0 To Matrice_size) Matrice(0, Matrice_size) = wSht.Cells(i, j).value Matrice_size = Matrice_size + 1 End If If wSht.Cells(1, j) = "BCCH" Then ReDim Preserve Matrice(0 To 5, 0 To Matrice_size) Matrice(1, Matrice_size) = wSht.Cells(i, j).value Matrice_size = Matrice_size + 1 End If End If Next j Next i For k = LBound(Matrice, 1) To UBound(Matrice, 1) For l = LBound(Matrice, 2) To UBound(Matrice, 2) ThisWorkbook.Worksheets(1).Range("A2").Offset(k, l).value = Application.Transpose(Matrice(k, l)) Next l Next k 

  1. 切换第一个If行与For j以及相应的最后一个End IfNext j ,所以内部循环只运行正确的行。
  2. 数据似乎从第2行开始,所以启动For i循环与2
  3. 如果您只需要这两列中的数据,您可以先在一个单独的循环中查找它们并保存它们的位置,这样就不需要嵌套循环。 (在这种情况下,我的第一点不适用)。 你甚至不需要循环,你可以使用Excel的MATCHfunction。
  4. matrix和转置似乎是一个矫枉过正。 因为i确定kl你可以摆脱这个部分,并直接从ij循环写入Worksheets(1)
  5. matrix中有五行,每五位输出一个正确的值,是不是可疑?
  6. 你似乎把值放到matrix的第0行和第1行,然后从第1行和第2行读取。 这可能是线路充满0 s的原因

如果你能提供什么确切的源数据,我可以帮助你更多。 但不知道,我的解决scheme看起来像

 PSC_col = Application.WorksheetFunction.Match("PSC", wSht.Rows(1).EntireRow, 0) BCCH_col = Application.WorksheetFunction.Match("BCCH", wSht.Rows(1).EntireRow, 0) For i = 2 To wSht.[A2].End(xlDown).Row If wSht.Cells(i, 1) = MyValue Then ThisWorkbook.Worksheets(1).[A2].Offset(k, 0).Value = wSht.Cells(i, PSC_col).Value ThisWorkbook.Worksheets(1).[B2].Offset(k, 0).Value = wSht.Cells(i, BCCH_col).Value k = k + 1 End If Next i