我正在尝试根据第一行和第一列在excel文件上显示多个值。我为我的价值观做了一个2D数组。 MyValue是一个InputBox
变量,我在第一列上试图找到MyValue,我希望获得“ PSC ”,“ BCCH “等等列,基本上与基于第1列的过滤器相同,但只显示其他列中的某些值。我对此操作的输出在此图像中:
然而,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
答案 0 :(得分:1)
If
切换第一个For j
行,并使用End If
切换相应的最后一个Next j
,因此内部循环仅运行正确的行。For i
启动2
循环。i
确定k
和l
,您可以删除此部分,并直接从i-j循环写入Worksheets(1)
。0
s 如果您可以提供您对精确源数据的期望,我可以为您提供更多帮助。但不知道,我的解决方案看起来像
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