excel - 如何写直到单元格值 = 0
问题描述
我是 VBA 的新手,我主要从不同人已经编写的代码构建我的大部分宏。但是我还没有找到这样做的。
我需要宏继续重复某个任务,直到值的单元格 = 0 0 来自 COUNTIF 公式。
- 所以我在单元格 A2 中有一个文本 ID,
- 它将偏移到单元格 B2,输入一个公式(这是一个 COUNTIF 公式)
- 然后它将偏移到单元格 C2,输入一个公式(这给了我另一个文本 ID)
- 然后它将C2复制到A3,然后重复步骤2
- 我的目标是继续这样做,直到 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...Loop 中调用 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
推荐阅读
- java - 示例 spring mvc 应用程序中的问题是什么
- linux - 如何在 shell 脚本中引用历史行?
- python-3.x - Pandas 中的复杂条件聚合
- java - 用另一个值替换字符串数组索引值
- javafx - ProgressIndicator 在不确定模式下花费大量 CPU (JavaFX)
- c - 在不使用 sting 库的情况下交换字符串的单词并使用指针
- java - 使用 Intent 而不是“saveInstance”保存多个单选按钮状态
- ios - AVAudioPlayerDidFinishPlaying 永远不会被调用,所以“其他声音”仍然“躲避” - 我做错了什么?
- javascript - Undefined 不仅仅是我的构造函数中某些变量的对象
- javascript - Mocha:错误:超过 2000 毫秒的超时。对于异步测试和钩子,确保调用了“done()”;如果返回一个 Promise,确保它解决