我有两个由一些数据构建的数据透视表(没有相同的结构),我需要使用其他一些表的笛卡尔乘积来比较每个条目。
我想在VBA中有一些嵌套的for循环,这些循环根据我构建的一些列表从数据透视表中获取数据。
我的列表:
+------+-----+
| Date | ID |
+------+-----+
| 9/1 | 123 |
| 9/2 | 124 |
| 9/3 | 200 |
| 9/4 | 201 |
| | 202 |
| | 300 |
| | 500 |
| | 999 |
+------+-----+
我不知道如何引用这些列表中每一列中的每个条目来在命令中使用它们。我的想法如下:
for each day in Date:
for each num in ID:
do_pivot_fetch(from pivot1, date=day, ID=num)
如果这些列表是在Excel中维护的(我总是这样写这些东西,这样在需要时很容易更改参数),我通常会使用do…while来迭代它们。你也可以尝试在每一行中找到最后一个填充的单元格,并用它来计算for循环的范围,但我发现,考虑到人们喜欢用excel电子表格做的事情,这是一个小问题。
假设您在"参数"表的A(日期)和B(ID)列中有列表。假设您在第1行中有标题,并且在每个列表的最后一个值之后有一个空行。然后你的代码看起来像这样:
Sub useParams()
Dim Date_val, ID_val As Range
With ThisWorkbook.Worksheets("Params")
Set Date_val = Range("A2")
Do While Date_val.Value <> ""
Set ID_val = Range("B2")
Do While ID_val.Value <> ""
//do_pivot_fetch(from pivot1, date=Date_val.Value, ID=ID_val.Value)
Set ID_val = ID_val.Offset(1, 0)
Loop
Set Dateval = Date_val.Offset(1, 0)
Loop
End With
End Sub