2012-11-15 40 views
0

我有5028行,不包括标题和3列,想要通过更改列“B”中的值在“C”中设置值1.7。目标查找多行 - MS-Excel宏

使用目标查找选项它可能只适用于一个单元格。我想为5028行做同样的事情,请通过运行一些宏来帮助完成任务。

+0

它应该是可能的。您是否尝试过制作自己的宏? Excel可以通过记录您的操作自动创建一个宏,然后您可以编辑它创建的代码。 – PowerUser

+1

好奇......这是某种单向散列,它会阻止您仅仅通过反转计算来确定列B中的值?即一个简单的公式?听起来像你可能不需要一个宏或“目标搜索”功能。 – Marc

回答

2

约翰·布斯托斯指出,正确的想法,这里是一个有效的解决方案:

Public Sub Demo() 
    Dim rngRow As Range 
    For Each rngRow In UsedRange.Rows 
    rngRow.Cells(1, 3).GoalSeek Goal:=1.7, ChangingCell:=rngRow.Cells(1, 2) 
    Next rngRow 
End Sub 

编辑:

使用ActiveSheet.UsedRange.Rows而不是UsedRange.Rows,如果您打算将此作为模块中的宏使用,而不是作为工作表之一或任何其他对vali的引用d范围。

对于您的示例,您可能更愿意使用:Range("A2:C5028").RowsMySheet.Range("A2:C5028").Rows

编辑:

Public Sub Demo() 
    On Error Resume Next 
    Dim rngRow As Range 
    For Each rngRow In ActiveSheet.UsedRange.Rows 
    rngRow.Cells(1, 3).GoalSeek Goal:=1.7, ChangingCell:=rngRow.Cells(1, 2) 
    Next rngRow 
End Sub 
+0

嗨jook,非常感谢..但我在vba为零,我只是试图在模块中复制你的代码并执行,我得到'object required'错误,然后如你所说我将它改为activesheet.usedrange.rows,那么我得到'参考是无效的'错误。请帮助,如果可能的话,请给我准确的代码,可以将其放入模块中。 – davidb

+0

嗨,jook,它工作得很好。非常感谢你。 – davidb

+0

@davidb好吧,现在,这不会中断,但请记住,5028行需要相当长的一段时间。它应该作为一个模块宏。如果您只需要在特定的工作表或区域上使用它,请使用'CodeNameOfYourWorksheet.Range(“A2:C5028”)。行 - - 代号不同于你可以在excel中看到的工作表名称 - 只是google它;) – Jook