簡體   English   中英

遍歷表中的行並將單元格值分配給命名變量

[英]Loop through Rows in Table and assign cell value to named variable

第一個問題就是這樣。

我正在嘗試創建一個循環,該循環將以遍歷表中的行的方式工作,並將各個列的單元格值分配給聲明的變量。 計划是在具有指定范圍輸入單元的邏輯語句和計算中使用這些變量,然后將輸出傳輸到工作表,在此它將構成數據透視表的基礎。

我正在使用的舊工作簿模板具有大量的vlookups,if語句等,沒有命名范圍。 它太亂了,有人插入了破壞某些公式的列/行。

幾年前,我在MSAccess查詢和vba上做過類似的事情,但是自那時以來或在excel中都沒有做太多的vba,也沒有做過。

到目前為止,除了MSDN參考之外,我發現以下有用的https://stackoverflow.com/a/21490552https://stackoverflow.com/a/12497229/6598860

'Declare variables
Dim Var1 As String    'To store Value from Table Column "Col1"
Dim Var2 As String    'To store Value from Table Column "Col2"
Dim Var3 As Variant    'To Store Value from Table Column "Date"
Dim SD As String    'To Store Value from Named Input Cell "StartDate"
Dim ED As String    'To Store Value from Named Input Cell "EndDate"
Dim counter As Integer    'Counter for pasting to row in worksheet "Dump"

'Set Date Range
SD = Range("StartDate").Value
ED = Range("EndDate").Value

'Set Counter
counter = 1

'Loop through rows in table "tblMyData"on Worksheet "Data" and
'assign values to variables (this bit is breaking down)
Dim lo As Excel.ListObject
Dim lr As Excel.ListRow
Set lo = Worksheets("Data").ListObjects("tblMyData")
For Each lr In lo.ListRows
    Var1 = Range(lr.Range, lo.ListColumns("Col1").Range).Value
    Var2 = Range(lr.Range, lo.ListColumns("Col2").Range).Value
    Var3 = Range(lr.Range, lo.ListColumns("Date").Range).Value

    'Logic Statement e.g.
    If SD > Var3 > ED Then
        Worksheets("Dump").Activate
        Cells(counter, 1).Value = Var1 * Var2
        Cells(counter, 2).Value = Var3
    Else

    End If
Next

我將用更具描述性的名稱替換變量名和列名,但希望這可以說明我正在嘗試實現的目標。 任何幫助或建議,將不勝感激。 謝謝

更改

Range(lr.Range, lo.ListColumns("Col1").Range).Value

Intersect(lr.Range, lo.ListColumns("Col1").Range).Value

這就是我引用列和行的交點處的單個單元格的方式。

我不確定這是否是唯一的錯誤,但是我將用下面的代碼替換底部的IF:

'Logic Statement e.g.
If SD > Var3 And Var3 > ED Then
    With Worksheets("Dump")
        .Cells(counter, 1).Value = Var1 * Var2
        .Cells(counter, 2).Value = Var3
    End With
Else
    'if you are not doing anything with the Else you can just remove it
End If

暫無
暫無

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

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