gpt4 book ai didi

vba - 将值分配给用户定义的数据类型

转载 作者:行者123 更新时间:2023-12-04 20:20:25 25 4
gpt4 key购买 nike

我想将范围的值分配给用户定义的数据类型。

我有一个在一周内多次测量的数据集,存储在 Excel 表中。我为数据集的范围创建了一个变量。然后我创建了一个包含日期和单一类型的用户定义数据类型。现在我想将范围的值分配给用户定义的数据类型。

数据集:

02/11/2011  3.8

02/11/2011 2.4

02/11/2011 8.9

02/12/2011 5.7

02/12/2011 4.6

02/12/2011 2.6

我已经让用户定义数据类型:
Type phData
Dy As Date
ph As Single
End Type

并创建了一个 phData 类型的变量并将大小与范围匹配:
Dim dailyData() As tradeData
Dim nrec as Integer
nrec = dataRng.Rows.Count
ReDim dailyData(nrec)

并在 excel 电子表格上定义了数据集的范围:
Dim dataRng As Range
Set dataRng = Range("A2", Range("A2").End(xlDown).End(xlToRight))

现在我想将范围内的值分配给 phData 类型。我可以使用以下方法一次分配一个值:
 dailyData(1).Dy= dataRng(1).Value

但我需要更高效的东西,因为我有大约 4,000 条记录。

最佳答案

尝试这个:

Dim rngData As Range
Dim varDummy As Variant
Dim DailyData() As phData
Dim iDailyData As Long

Set rngData = Range("A2", Range("A2").End(xlDown).End(xlToRight)) ' or whatever

varDummy = rngData ' Reads in whole range at once into array. (Must be Variant.)
' Much quicker than reading one cell at a time.

ReDim DailyData(1 To UBound(varDummy, 1))

' Parse data into your user-defined type array.
For iDailyData = LBound(DailyData) To UBound(DailyData)
With dailyData(iDailyData)
.Dy = CDate(varDummy(iDailyData, 1))
.ph = CSng(varDummy(iDailyData, 2))
End With
Next iDailyData

发布之前没有测试代码...

查看这篇旧但仍然非常有用的文章: http://www.avdf.com/apr98/art_ot003.html -- 请记住,您不再受 Excel 5 和 7 的限制(除非您使用的是 Excel 5 或 7,在这种情况下,我有一些很酷的 MC Hammer 磁带我想卖给您……)

关于vba - 将值分配给用户定义的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4947840/

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