簡體   English   中英

嵌套用於引用表的循環的Excel VBA構造

[英]Excel VBA construct nested for loops to reference tables

我有兩個由一些數據(沒有相同結構)構成的數據透視表,我需要使用其他一些表的笛卡爾積來比較每個條目。

我想在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電子表格進行的操作,我發現這是一個小問題。

假設您在工作表“ Params”上的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM