循环遍历 2 列以查找起点和终点,以在另一列中插入公式



我对 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

。希望这有帮助

最新更新