gpt4 book ai didi

arrays - 如何将选定范围复制到给定数组中?

转载 作者:行者123 更新时间:2023-12-02 07:39:31 24 4
gpt4 key购买 nike

我有一个包含 145 个类别的重复列表,每个类别有 15 列数据。我通过将类别数量减少到 24 个并添加相应的数据来合并此列表。

例如,如果最初我有类别 A B C D E F G 并且我进行了合并,我将添加 A 中的所有值,并假设 F,以获得一个新类别。

另一个问题是,所有这 145 个类别都会在 60 个时间段内重复出现。所以我必须分别合并每个时间段的数据。

为此,我尝试使用数组。

Sub CategoriesToSectors()
Dim k As Integer
Dim j As Integer
Dim p As Integer
Dim Destination As Range
' p is just a filler/dummy variable until I later decide which categories go into which sector


Dim CategoryData(144, 14) As Long
Dim SectorData(23, 14) As Long

k = 0
' k should go Upto 60
' I first copy the data from a range in the first worksheet into the array CategoryData
' Then I move 145 rows down for the next time-period's data and repeat this whole process
While k < 60
Sheets("ReformattedData").Select
Range("B1:P145").Select
ActiveCell.CurrentRegion.Offset(k * 145, 0).Select
CategoryData = Selection.Value

For j = 0 To 14
SectorData(0, j) = CategoryData(1, j) + CategoryData(6, j) + CategoryData(8, j) + CategoryData(13, j)
For p = 1 To 23
SectorData(p, j) = CategoryData(15, j) + CategoryData(19, j) + CategoryData(31, j) + CategoryData(44, j)
Next p
Next j
' paste consolidated sectordata array one below another in SectorData worksheet
Sheets("SectorData").Select
Range("B2").Select
Set Destination = ActiveCell.Offset(k * 25, 0)
Destination.Resize(UBound(SectorData, 1), UBound(SectorData, 2)).Value = SectorData


Wend


End Sub

如您所见,我所做的是首先尝试将第一个范围 block 复制到 CategoryData 数组中。然后,我将数据组合到扇区数组中 - 我刚刚使用重复值来测试它 - 带 p 的 for 循环不应该存在。我最终将使用 24 种不同的语句来创建 SectorData 数组。

然后我将合并数据粘贴到另一张纸上。我返回到第一张工作表,将选择向下移动到下一个范围 block (第一个单元格下方的 145 个单元格),然后选择此数据并重复。

这似乎不起作用 - 将数据输入第一个数组时出错 - CategoryData。

如果有帮助,我们将不胜感激。

谢谢

最佳答案

为了将 Range 复制到 VBA 数组中,您必须使用 Variant:

Dim CategoryData() As Variant
'or just CategoryData As Variant (no brackets)
'then the following will work
CategoryData = Selection.Value

传输数据后,您可以检查 UBound 中的 CategoryData。

这里有一个有用的讨论 at cpearson .

只要尺寸相同,您就可以将 Range 设置为数组(示例中的 SectorData),而不必将其设置为 Variant。

关于arrays - 如何将选定范围复制到给定数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18000617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com