我在excel中开发了植被模型,需要添加放牧功能。
我有几个矩阵可以完成植被成分的所有计算,现在我有一个步骤列表(访问的随机单元格,2500个中的750个)以及从该特定单元格中获取了多少生物量。
我需要再次将该列表中的每个单元格值更新为矩阵格式,以计算剩余的生物量。我尝试了几种" index"的组合。和#34;匹配"和查找,但无法使其工作。
我甚至编号所有2500个单元格,使其更简单,而不是使用行和列引用。任何线索? (将是使用函数Index从矩阵中检索值的oposit)
答案 0 :(得分:0)
我认为我认为适合你的东西。我创建了3个工作表。它们被命名为VegMatrix,VisitedCells和VegMatrixNew。
VegMatrix是起始矩阵,我认为它是50 x 50,A1中的第一个数据单元。这是部分图片:
下一张是CellsVisited。它有行,小块和从细胞中移除的植物的数量。
第三张名为VegMatrixNew。这是移除后原始矩阵的样子。
这是使用这些VBA宏完成的:它们将起始的VegMatrix数据复制到VegMatrixNew表。然后它将遍历CellsVisited工作表中的行,并获取每个单元格的行,列和数量。从VegMatrixNew中的相应单元格中减去去除的数量。
Sub VegRemove()
Dim Wbk As Workbook
Set Wbk = ActiveWorkbook
Dim row As Integer
Dim col As Integer
Dim vegRemoved As Integer
Dim numRows As Integer
CopySheet
Worksheets("VisitedCells").Activate
numRows = Wbk.Worksheets("VisitedCells").Range("A2", Range("A2").End(xlDown)).Rows.Count
For x = 2 To numRows + 1 'start at 2 because of header.
row = Worksheets("VisitedCells").Cells(x, 1).Value
col = Worksheets("VisitedCells").Cells(x, 2).Value
vegRemoved = Worksheets("VisitedCells").Cells(x, 3).Value
Worksheets("VegMatrixNew").Cells(row, col).Value = Worksheets("VegMatrix").Cells(row, col).Value - vegRemoved
Next x
End Sub
Sub CopySheet()
Sheets("VegMatrix").Select
Cells.Select
Selection.Copy
Sheets("VegMatrixNew").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
End Sub
答案 1 :(得分:0)
我刚刚找到了一个更简单的方法:
我构建了一个带有单元格引用的矩阵(对应于原始的植被矩阵)
Harvested and corresponding reference table
然后我随机生成从每个细胞收获的量。 “参考”使用“索引”功能搜索X(行)和Y(列)的值,并为这些特定坐标给出“单元名称”。
在另一个矩阵上,我有一个if.error函数,后跟一个值查找
= IFERROR(VLOOKUP(“参考矩阵”,“参考 - >收获金额”,2,FALSE),0)
现在我可以使用这个lates表从原始植被矩阵中减去。
(抱歉,我无法更清楚地说明这一点,但这样可以阻止我嵌入表格和发布两个以上的图片链接。)
答案 2 :(得分:0)