1

我有 5028 行,不包括标题和 3 列,想通过更改“B”列中的值在“C”列中设置值 1.7。

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

4

3 回答 3

3

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").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
于 2012-11-15T16:02:14.517 回答
1

您可以创建一个循环然后执行 Range-Goal 搜索的宏 - http://msdn.microsoft.com/en-us/library/office/bb209907%28v=office.12%29.aspx

于 2012-11-15T15:57:02.060 回答
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
于 2018-06-15T14:02:42.310 回答