【发布时间】:2021-03-06 17:01:49
【问题描述】:
我有一个 Range ("A1:A"+finalRow),其中 finalRow 是 "A" 列的最后一行,他的值随机变化。
我需要从范围中提取每个值并将每个值分配给不同的变量名,例如var1, var2, ..., var+finalRow。
在这种情况下,我有 20 个单元格/值,我的部分代码如下:
For y = 1 To finalRow
If finalRow = 20 Then
res1 = Range("A" + y).Value
pos1 = Range(1, y + 4).Address
res2 = Range("A" + y).Value
pos2 = Range(1, y + 4).Address
res3 = Range("A" + y).Value
pos3 = Range(1, y + 4).Address
'...
res20 = Range("A" + y).Value
pos20 = Range(1, y + 4).Address
ElseIf finalRow = 19 Then
res1 = Range("A" + y).Value
pos1 = Range(1, y + 4).Address
res2 = Range("A" + y).Value
pos2 = Range(1, y + 4).Address
res3 = Range("A" + y).Value
pos3 = Range(1, y + 4).Address
'...
res19 = Range("A" + y).Value
pos19 = Range(1, y + 4).Address
ElseIf finalRow = 18 Then
'...
ElseIf finalRow = 1 Then
res1 = Range("A" + y).Value
pos1 = Range(1, y + 4).Address
Next y
是否可以在不创建大量代码的情况下进行范围游览?
【问题讨论】:
-
使用数组...这么多变量是代码的味道。
-
看看arrays
-
尝试使用字典。单元格地址将是项目的键和单元格值。
-
您可以将一系列单元格中的值/地址分配给变量数组(例如,将 myValues 作为 Variant,将 myAddresses 作为 Variant,然后 myValues =
.Range("A1:A" +finalrow).value 等。因为您使用的是两个数组,所以您需要使用 LBound 和 UBound 遍历这些数组。 -
你能解释一下“我需要什么”的意思吗?您可能会收到一些代码来覆盖它。否则,我认为不熟悉数组或字典会更难理解我们的建议。