第一个问题是这样的。
我正在尝试创建一个循环,它将通过表中的行来工作,并将各列的单元格值分配给声明的变量。
计划是在逻辑语句中使用这些变量并使用命名范围输入单元进行计算,然后将输出传输到工作表,在工作表中它将构成数据透视表的基础。
我正在使用的遗留工作簿模板有一堆vlookup,if语句等,没有命名范围;它是杂乱的,有人插入了列/行,打破了一些公式。
几年前我在使用MSAccess查询和vba做了类似的事情,但是从那时起或者在excel中都没有做太多的vba。
到目前为止,它添加到MSDN参考我发现以下有用
https://stackoverflow.com/a/21490552和https://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
我将用更具描述性的内容替换变量名称和列名称,但希望这说明了我想要实现的目标。 任何帮助或建议将不胜感激。 感谢
答案 0 :(得分:2)
更改
Range(lr.Range, lo.ListColumns("Col1").Range).Value
到
Intersect(lr.Range, lo.ListColumns("Col1").Range).Value
。
我是如何在列和行的交叉处引用单个单元格的。
答案 1 :(得分:0)
我不确定这是否是唯一的错误,但我会用下面的代码替换底部的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