我有5028行,不包括标题和3列,想要通过更改“B”列中的值在“C”中设置值1.7。
使用目标搜索选项,只能用于一个单元格。我想对5028行做同样的事情,请通过运行一些宏来帮助完成任务。
答案 0 :(得分:2)
John Bustos指出了正确的想法,这是一个有效的解决方案:
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
。
对于您的示例,您可能更喜欢使用:Range("A2:C5028").Rows
或MySheet.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
答案 1 :(得分:1)
您可以创建一个循环然后执行范围目标搜索的宏 - http://msdn.microsoft.com/en-us/library/office/bb209907%28v=office.12%29.aspx
答案 2 :(得分:0)
这是很好的代码。我为了我的目的修改了它,不仅是一列而是多列。为了运行我的代码,您必须首先选择(突出显示)您希望进入GoalSeek的所有单元格(如表中的连接,而不是单独的区域)。我的代码:
Sub GoalSeek_To_0()
' Macro created 15 Jun '18 by Benjamin Cohen
On Error Resume Next
Dim row_, col_ As Range
Dim i_, j_ As Integer
' i_ = 1
j_ = 1
For Each col_ In Selection.Columns
For Each row_ In Selection.Rows
row_.Cells(1, j_).GoalSeek Goal:=0, ChangingCell:=row_.Cells(1, j_).Offset(0, -1)
row_.Cells(1, j_).Value = 1
Next row_
j_ = j_ + 1
Next col_
End Sub