命名列范围vba

时间:2016-02-01 13:56:48

标签: excel vba excel-vba

我想知道是否有人可以提供帮助。我在下面的代码中,根据成本报告(" 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

2 个答案:

答案 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