【发布时间】:2019-06-29 19:52:54
【问题描述】:
所以我想遍历一个电子表格并在这两者相交的单元格中收集表头、行表头和值。然后构建这些值的数组。
这是一个例子
V1 V2 V3 V4
C1 1 1 2
C2 3
C3 2 4
C4 1 1
数组的最终输出类似于
V1, C1, 1
V2, C1, 0
V3, C1, 1
V4, C1, 4
V1, C2, 0
V2, C2, 3
etc
然后,我将对这个数组进行排序并消除任何具有“0”值的条目。
问题:我在实践中并不是最好的,并且在尝试定义变量或数组条目时不断收到错误。我觉得这个想法是合理的,但在语法方面,我无法克服具体的错误。
我想我不希望有人完全解决它,因为这违背了学习目的
我最初的解决方案是构建一个数组或 Header、一个 Row 标题数组和一个数据数组。
基本上是一个由 V 值、另一个 C 值和一个整数值组成的数组。
我写了下面的代码(再次请原谅我的无知)。
据我所知,它应该循环通过第一个范围抓取值 V1(或我的代码中的 C2)循环通过第二个范围抓取值 C1(或我的代码中的 A2)然后 1 的值(我会称它为 Z1)。然后增加整数为抓取V2,然后是C1,然后是Z2,以此类推。
Dim myarrayX() As Variant
Dim myarrayY() As Variant
Dim myarrayZ() As Variant
Dim myarrayHeader() As Variant
Dim myarrayRowHeader() As Variant
Dim myarrayIntersection() As Variant
Dim Result() As Variant
Dim i As Variant
Dim j As Variant
Dim k As Variant
Dim l As Variant
Dim m As Variant
Dim n As Variant
l = 0
m = 0
n = 0
myarrayHeader = Range("C2:H2").Value
myarrayRowHeader = Range("A2:A6").Value
myarrayIntersection = Range("C2:H6").Value
For Each i In myarrrayHeader.Cells
myarrayX(l) = Cell.Value
For Each j In myarrayRowHeader.Cells
myarrayY(m) = Cell.Value
For Each k In myarrayIntersection.Cells
myarrayZ(n) = Cell.Value
k = k + 1
i = i + 1
n = n + 1
Next k
m = m + 1
Next j
l = l + 1
j = j + 1
Next i
我无法得到任何输出,因为它显示“myarrayRowHeader.Cells”的“限定符无效”,我不知道为什么会这样。
【问题讨论】:
-
从
myarrayRowHeader = Range("A2:A6").Value中删除.Value -
@AAA - 你的建议不会单独起作用 - 考虑一下 _default 属性是什么!
-
@AJD,OP 的最后一个问题是关于他们获得的无效限定符。
.Value属性不一定返回范围。我没有发布这个问题的完整答案,因为 OP 说他们想自己解决这个问题。我只是帮助弄清楚他们问的一个问题。答案可能比您在下面给出的要简单得多。 -
@AAA 但仅删除
.Value不会改变您建议中的结果,因为范围的默认属性,它仍将返回一个值数组!不仅Set关键字必须改变,声明也必须改变。 -
关键是,代码无论如何都不起作用,这就是我的答案更复杂的原因。