根据条件匹配 VBA 中的值
Match a value in VBA based on a condition
在工作表 2 中,我想要一个 运行 table 值的宏,主要在 F 列(最大入口浓度)和 B 列(操作)中,如下图所示 Worksheet 1。基本上,它会找到对应于列 F 的 0 值的引用操作。
它将运行列F,当找到一个0值时,它return进行匹配操作。这样做直到 table 结束。如果我有 1A - 0、2B - 0 和 4C - 0,它总是 select 宏找到 0 值的第一个操作。图中宏要return取值为1,即第一个操作。
所以我写了下面的代码并给出了 运行-time error '91': Object variable or With block variable not set.
Dim sh1 As Worksheet
Dim StartCellCin As Range
Dim StartCellO As Range
Dim startRow As String
Dim multiplication As Integer
Dim countRows As Integer
Dim lastRow As Long
Dim operation As Long
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
startRow = StartCellCin.Row
multiplication = sh1.Range("D4").Value2 * sh1.Range("D6").Value2
countRows = multiplication - 1
lastRow = startRow + countRows
Do While startRow < lastRow
If StartCellCin.Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13"), Application.WorksheetFunction.Match(0, sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
Else
startRow = startRow + 1
If StartCellCin.Offset(startRow).Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13").Offset(startRow), Application.WorksheetFunction.Match(0,sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
End If
End If
Loop
当我 运行 使用 Option Explicit 时,它不会 return 任何语法错误。任何人都可以帮助我吗?
谢谢!
如果我没记错的话,你只需要再写一行。在使用 WorkSheet 对象之前,您必须设置 sheet。 (尽管对于这样一个简单的循环您不需要所有这些对象)但是,要回答您的问题,请参阅此处的第一行:
Set sh1 = Sheets("Your Sheet's Name")
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
'...
在工作表 2 中,我想要一个 运行 table 值的宏,主要在 F 列(最大入口浓度)和 B 列(操作)中,如下图所示 Worksheet 1。基本上,它会找到对应于列 F 的 0 值的引用操作。
它将运行列F,当找到一个0值时,它return进行匹配操作。这样做直到 table 结束。如果我有 1A - 0、2B - 0 和 4C - 0,它总是 select 宏找到 0 值的第一个操作。图中宏要return取值为1,即第一个操作。
所以我写了下面的代码并给出了 运行-time error '91': Object variable or With block variable not set.
Dim sh1 As Worksheet
Dim StartCellCin As Range
Dim StartCellO As Range
Dim startRow As String
Dim multiplication As Integer
Dim countRows As Integer
Dim lastRow As Long
Dim operation As Long
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
startRow = StartCellCin.Row
multiplication = sh1.Range("D4").Value2 * sh1.Range("D6").Value2
countRows = multiplication - 1
lastRow = startRow + countRows
Do While startRow < lastRow
If StartCellCin.Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13"), Application.WorksheetFunction.Match(0, sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
Else
startRow = startRow + 1
If StartCellCin.Offset(startRow).Value = 0 Then
operation = Application.WorksheetFunction.Index(sh1.Range("B13").Offset(startRow), Application.WorksheetFunction.Match(0,sh1.Range("startRow:lastRow"),0),1)
startRow = startRow + 1
End If
End If
Loop
当我 运行 使用 Option Explicit 时,它不会 return 任何语法错误。任何人都可以帮助我吗?
谢谢!
如果我没记错的话,你只需要再写一行。在使用 WorkSheet 对象之前,您必须设置 sheet。 (尽管对于这样一个简单的循环您不需要所有这些对象)但是,要回答您的问题,请参阅此处的第一行:
Set sh1 = Sheets("Your Sheet's Name")
Set StartCellCin = sh1.Range("F13")
Set StartCellO = sh1.Range("B13")
'...