excel - 在多维数组中插入数据
问题描述
我必须将输入文件中的数据移动到另一个工作簿。数据在工作表中作为硬编码输入结构化,如下所示,其中包含所有标识符的列是一个名为“INPUT_MARKER”的命名范围。
IQ_SALES 100 200 300
IS_MARGIN 20 30 40
IQ_EBITDA 50 30 20
我只需要移动一些数据。因此,例如在上面我只需要移动 IQ_SALES 数据和 IQ_EBITDA 数据。所以我需要了解如何创建一个仅包含所需数据的数组。
下面的代码将 INPUT_MARKER 列中的数据与名为“identifierArray”的数组中的元素进行比较,然后我打算将所有行数据插入名为“bigDataArray”的多维数组中。我尝试了几种方法,但无法完成这项工作。非常感谢任何帮助。我在下面省略了一些冗余代码,因此只包含与此问题有关的代码。
Sub Update()
Dim identifierArray(), bigDataArray() As Variant
Application.ScreenUpdating = False
Application.CutCopyMode = False
'Definition of the array of data that is to be transferred to the targetModel
identifierArray = Array("IQ_SALES", "IQ_EBITDA")
ReDim bigDataArray(1 To UBound(identifiersArray))
With Workbooks(sourceModel).Sheets("DATA")
For Each c In .Range("INPUT_MARKER")
For Each element In identifierArray
If element = c.Value Then
'To construct bigDataArray by inserting row data every time element equals c.Value
End If
Next element
Next c
End With
End Sub
解决方案
我最近处理了一个类似的问题。从事物的外观来看,这可以通过多维数组来处理
虽然作为一个倾向,我建议检查动态多维数组的参考
Private Sub fill_array()
Dim arr() As String
Dim i As Integer: i = 0
Dim cell As Range
Dim ws As Worksheet: Set ws = Sheets("DATA")
For Each cell In ws.Range("INPUT_MARKER")
If ws.Cells(cell.Row, 1) = "IQ_SALES" Or ws.Cells(cell.Row, 1) = "IQ_EBITDA" Then
ReDim Preserve arr(0 To 2, i)
arr(0, i) = ws.Cells(cell.Row, 2)
arr(1, i) = ws.Cells(cell.Row, 3)
arr(2, i) = ws.Cells(cell.Row, 4)
i = i + 1
End If
Next cell
End Sub
因此,您的数组将具有 的结构arr(x, y)
,其中:
x
-[0;2]
- 将是您要存储的 3 列数据y
-n
- 数组的索引(只有IQ_SALES
和IQ_EBITDA
被添加)
编辑:
这当然是假设,你的数据“
INPUT_MARKER
”开始于 ColumnA
另外作为一个额外的提示,如果您还想存储数组源的信息 - 类似于主键,您可以增加第一个维度
ReDim Preserve arr(0 to 3, i)
arr(3, i) = cell.Row ' edited (instead of arr(3)= …)
并使用示例cell.Row
作为从何处获取数据的参考,以便反向跟踪数据
推荐阅读
- javascript - JavaScript 干扰 CSS 悬停动画
- angular - 在 Angular ngx-google-analytics 中跟踪电子商务
- python - Python - ValueError:新数组的总大小必须保持不变
- amazon-web-services - 为 Lex 机器人运行时的 PostText API 调用授权用户
- python - 部分显示 Python 的滚动条
- react-native - 按钮处理函数卡在模态响应用户点击
- macos - 如何在 Mac OS 上安装特定版本的 minikube?
- notepad - 为什么我在记事本文档中输入的代码不会在 Web 浏览器上显示?
- windows - Windows Performance Analyzer (WPA) 中的 CPU(采样)图未显示
- c++ - 使用模板的节点队列