在数组中搜索值并在该行/列中返回值

时间:2017-01-13 17:03:15

标签: arrays excel vba

我在vba非常基础,所以很遗憾没有很多关于如何进行此类搜索和相关调用的想法。

我有一个如下所示的数组,数组中的每个单元格都是0到100之间的数字。

我想创建一个表,其中对于80以上的数据集中的每个值,我从单元格的列和行返回标题。所以在第一次迭代时,表格看起来像这样:

表格示例

一个80 b

c 85 f

e 92 g

阵列

 ABCDEFGHIJ

一个

B'/ p>

ç

d

ë

˚F

ħ

Ĵ

我认为我已经具体了,但我真的不知道从哪里开始。在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这样的事情会让你开始:

Sub CaptureCellsAboveValue(val as double, srcRange as Range, destRange as Range)
    Dim srcRrow as long, srcCol as Long, destRow as Long: destRow = 1
    For srcRow = 2 to srcRange.Rows.Count
        For srcCol = 2 to srcRange.Columns.Count
            If srcRange.Cells(srcRow, srcCol).Value > val Then
                destRange.Cells(destRow, 1).Value = _
                    srcRange.Cells(srcRow, 1).Value & " " & _
                    srcRange.Cells(srcRow, srcCol).Value  & " " & _
                    srcRange.Cells(1, srcCol).Value
                destRow = destRow + 1
            End If
        Next
    Next
End Sub

您可以将它与参数一起使用:

  • 值:您的示例中的80

  • srcRange:表格范围包括标题行和标题列

  • destRange:您想要取出这些结果的范围的顶部单元格。

答案 1 :(得分:0)

感谢上面的提示,对不起,这是一个糟糕的问题格式。

在朋友的帮助下,我设法提出了这个问题所需的问题。源范围不会动态定义自己,我正在学习如何做。

Sub maketable()
Dim rng As Range, i As Single, j As Single
Dim outrow As Single
Set rng = Sheets("Heatmap+").Range("F6:HR226")

outrow = 2

For i = 1 To 221
For j = 1 To 221
    If rng(i, j).Value >= 80 Then

        Sheets("Table").Cells(outrow, 1).Value = rng(i, j).Value
        Sheets("Table").Cells(outrow, 2).Value = Sheets("Heatmap+").Cells(1, j + 1).Value
        Sheets("Table").Cells(outrow, 3).Value = Sheets("Heatmap+").Cells(i + 1, 1).Value



        outrow = outrow + 1
    End If
Next j
Next i

希望这可以帮助那些从大阵列中寻找这种输出的人。

- 作为学习的一部分,我试图使之前的答案有效,所以谢谢你!