首页 > 解决方案 > 循环遍历 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

标签: vba

解决方案


我删除了你的照片并添加了一个数据块。这里的人们不希望不必单击链接来理解您的问题。

编辑

通常这里的人会反对,如果你改变你的问题。这意味着之前给出的答案不再与问题匹配,这对善意回答的人是不公平的。公认的做法是接受第一个问题的答案,然后提出第二个问题。可以参考上一个问题。但由于我是唯一一个回答的人,而且你是新手,所以我很友善并改变了我的回答:

以下应该做你想要的:

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").End(xlUp).Row 为您提供了 A 列中最后使用的行。您可能需要稍后修改它以改用 B 列。然后循环遍历行,直到最后一行,以查看公式是否需要添加。我将一个布尔值设置为 false 开始,以便忽略任何初始的空行,然后当它遇到 B 中的某些内容时,该标志将被取消设置。 Cells(x, y).Address 给出了单元格地址的 A1 表示法;您可以根据参数获取相对或绝对地址。重置时 formulaText 应该为空的要求意味着重复 2 月 18 日的值,即使该行在 a 列中有 1。

希望这可以帮助


推荐阅读