如何写入Do Until Cell值=0



我是VBA的新手,我的大部分宏都是从不同的人已经编写的代码中构建的。但我还没有找到能做到这一点的。

我需要宏不断重复某个任务,直到值为0的单元格0来自COUNTIF公式。

  1. 所以我在单元格A2中有一个文本ID
  2. 它将偏移到单元格B2,输入一个公式(这是COUNTIF公式(
  3. 然后它将偏移到单元格C2,输入一个公式(这会给我另一个文本ID(
  4. 然后将C2复制到A3,然后重复步骤2
  5. 我的目标是继续这样做,直到列B中的COUNTIF值为0

我当前的宏是

Sub macro ()
Selection.Offset(0, 1).Select
ActiveCell.FormulaR1C1 = "=COUNTIFS(TASKPRED!C1,RC1,TASKPRED!C10,""Y"")"

'Add formula #2 (Type the "Driving successor")
Selection.Offset(0, 1).Select
ActiveCell.Formula2R1C1 = "=INDEX(TASKPRED!C[-1],MATCH(RC1&""Y"",TASKPRED!C1&TASKPRED!C10,0),0)"
'Copy to new line
Selection.Copy
Selection.End(xlToLeft).Select
Selection.Offset(1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub

我试过这个,但它不起作用

i = 2
Do Until Range(i, 2).Value = 0
[MACRO ABOVE HERE]
i = i + 1
Loop

感谢

在Do…循环中调用Sub

  • 如果公式是正确的,应该这样做
  • 这感觉不对,应该有更好的方法
  • 未经测试

代码

Option Explicit
Sub pasteFormulas(cel As Range)
cel.Offset(, 1).FormulaR1C1 _
= "=COUNTIFS(TASKPRED!C1,RC1,TASKPRED!C10,""Y"")"
cel.Offset(, 2).Formula2R1C1 _
= "=INDEX(TASKPRED!C[-1],MATCH(RC1&""Y"",TASKPRED!C1&TASKPRED!C10,0),0)"
cel.Offset(1).Value = cel.Offset(, 2).Value
End Sub
Sub doPasteFormulas()
Dim i As Long: i = 1
Dim cValue As Variant
Do
i = i + 1
pasteFormulas Cells(i, 1)
cValue = Cells(i, 2).Value
Loop Until cValue = 0
End Sub

最新更新