我对 VBA 比较陌生,希望能得到一些关于我的问题的建议。
我有三列。 A 列是我的开始信号,B 列是我的结束信号,信号由值"1"标记。 C 列是我想要插入公式的位置。
我正在寻找一些循环遍历 A 列和 B 列的代码,以查找在 C 列中插入公式的起点和终点,并重复此过程直到 A 列结束。
如下所示。 非常感谢对此的任何帮助!
谢谢xx
A B C D
1
2 1 01/02/2018 01/02/2018
3 02/02/2018 01/02/2018
4 03/02/2018 01/02/2018
5 04/02/2018 01/02/2018
6 05/02/2018 01/02/2018
7 1 06/02/2018 01/02/2018
8 07/02/2018
9 08/02/2018
10 09/02/2018
11 1 10/02/2018 10/02/2018
12 11/02/2018 10/02/2018
13 12/02/2018 10/02/2018
14 13/02/2018 10/02/2018
15 1 14/02/2018 10/02/2018
16 15/02/2018
17 16/02/2018
18 17/02/2018
19 1 18/02/2018 18/02/2018
20 1 19/02/2018 18/02/2018
21 1 20/02/2018 18/02/2018
我删除了你的图片并添加了一个带有数据的块。 这里的人们不希望点击链接来理解您的问题。
编辑
通常,如果您更改问题,这里的人会反对。 这意味着先前给出的答案不再与问题匹配,这对真诚回答的人是不公平的。 公认的做法是接受第一个问题的答案,然后问第二个问题。 可以参考上一个问题。 但是因为我是唯一一个回答的人,而你是一个新手,所以我很好并改变了我的答案:
以下内容应执行所需的操作:
Sub Button1_Click()
Dim endRow As Integer
Dim doFormula As Boolean
Dim i As Integer
Dim formulaText As String
doFormula = False
formulaText = ""
endRow = Cells(Rows.Count, "A").End(xlUp).row
For i = 1 To endRow
If Cells(i, 1) = 1 And formulaText = "" Then
formulaText = "=" + Cells(i, 3).Address(RowAbsolute:=False, ColumnAbsolute:=False)
End If
If Cells(i, 1) = 1 Or doFormula Then
Cells(i, 4).Formula = formulaText
doFormula = True
End If
If Cells(i, 1) <> 1 And Cells(i, 2) = 1 Then
doFormula = False
formulaText = ""
End If
Next
End Sub
作为解释,Cells(Rows.Count,"A"(。结束(xlUp(。"行"提供列 A 中最后使用的行。 您可能需要稍后修改此设置以改用 B 列。 然后,它会遍历行,直到最后一行,以查看公式是否需要添加。 我首先将布尔值设置为 false,以便忽略任何初始空行,然后当它遇到 B 中的某些内容时,该标志将取消设置。 单元格(x, y(。地址给出单元格地址的 A1 表示法;您可以根据参数获取相对或绝对地址。 重置 formulaText 时应为空的要求意味着重复 2 月 18 日的值,即使该行在 a 列中有 1
。希望这有帮助