我在vba非常基础,所以很遗憾没有很多关于如何进行此类搜索和相关调用的想法。
我有一个如下所示的数组,数组中的每个单元格都是0到100之间的数字。
我想创建一个表,其中对于80以上的数据集中的每个值,我从单元格的列和行返回标题。所以在第一次迭代时,表格看起来像这样:
表格示例
一个80 b
c 85 f
e 92 g
的阵列
ABCDEFGHIJ
一个
B'/ p>
ç
d
ë
˚F
克
ħ
我
Ĵ
我认为我已经具体了,但我真的不知道从哪里开始。在此先感谢您的帮助。
答案 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
希望这可以帮助那些从大阵列中寻找这种输出的人。
- 作为学习的一部分,我试图使之前的答案有效,所以谢谢你!