vba - 循环遍历 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").End(xlUp).Row 为您提供了 A 列中最后使用的行。您可能需要稍后修改它以改用 B 列。然后循环遍历行,直到最后一行,以查看公式是否需要添加。我将一个布尔值设置为 false 开始,以便忽略任何初始的空行,然后当它遇到 B 中的某些内容时,该标志将被取消设置。 Cells(x, y).Address 给出了单元格地址的 A1 表示法;您可以根据参数获取相对或绝对地址。重置时 formulaText 应该为空的要求意味着重复 2 月 18 日的值,即使该行在 a 列中有 1。
希望这可以帮助
推荐阅读
- azure - 将 B2C 重定向 URL 设置为 b2clogin.com 时,我在哪里可以将 validateAuthority 设置为 false
- python - 考虑不确定性的高斯拟合
- asp.net-mvc - 防止在 ASP.NET MVC 中为某些视图搭建脚手架
- angularjs - 根据自定义 ui-grid 上的值启用和禁用单元格选择
- javascript - ReCaptcha V3 Invisible: Uncaught (in promise) 请求超时
- python - 如何迭代 jinja 属性:错误没有属性
- angular - angular 7 新项目:错误!代码 ETARGET ; 找不到与 @angular-devkit/ 匹配的版本
- r - R:修复定义为函数的循环
- postgresql - 如何引发自定义 Postgresql 错误并在 Ecto 中处理它
- c# - .NET Core - 附件导致发送邮件失败