我想知道是否有人可以提供帮助。我在下面的代码中,根据成本报告(" i")中的特定条件(" Electric")将信息提取到测试表(" E&#34)。我想避免使用列的静态引用" I"并将其更改为我的命名参考" MPT"在表格内。
Public Sub Main()
Set i = Sheets("Cost Report")
Set e =Sheets ("Test")
Dim d
dim j
d = 1
j=2
Do until IsEmpty(i.Range("I" & j))
IF i.Range("I" & j) = "Electric" Then
d = d+1
e.rows(d).Value-i.Rows(j).Value
End if
j=j+1
Loop
End sub
我试图在下面插入代码并替换列#34; I"与" IC"但无法让宏工作。
Dim rG As Range
Dim IC AS Long
Set rG=Range("MPT")
IC=rG.Column
Do Until IsEmpty(i.Range("IC" & j))
If i.Range("IC" & j) = "Electric" Then
答案 0 :(得分:0)
以下是一个可以做到的样本。有关详细信息,请参阅以下网站http://www.thespreadsheetguru.com/blog/the-vba-guide-to-named-ranges。希望它有所帮助。
'Single Cell Reference (Worksheet Scope)
RangeName = "Year"
CellName = "A2"
Set cell = Worksheets("Sheet1").Range(CellName)
Worksheets("Sheet1").Names.Add Name:=RangeName, RefersTo:=cell
答案 1 :(得分:0)
我假设MPT
范围只有1列。如果没有,请告诉我。
在这种情况下,您可以限定范围对象并循环遍历范围中的每个单元格以测试条件。
我也摆脱了j
计数器,因为它是多余的。
Public Sub Main()
Set i = Sheets("Cost Report")
Set e = Sheets("Test")
Dim rG as Range, cG as Range
Set rg = i.Range("MPT")
Dim d as Long
d = 2
For each cG in rG
If cG.Value2 = "Electric" Then
e.rows(d).Value-i.Rows(d).Value
d = d+1
End if
Loop
End sub