【问题标题】:Comparing cells in Excel and adding blank rows above if they are not similar比较 Excel 中的单元格,如果它们不相似,则在上方添加空白行
【发布时间】:2018-07-14 11:49:06
【问题描述】:

我会收到一份包含许多轮班时间的每日清单,通常格式如下:

0800-2000
0800-2000
0801-2000
0930-2130
0930-2200
1000-2200

以此类推...(每个在不同的行,一次数百个)

我正在尝试编写一个宏/VBA,通过在每个不同的开始时间上方插入一个空白行来对每个 START 时间进行分组(忽略那些仅相隔 1 分钟的那些,这些被认为是相同的)。

我想到的概念是截断单元格以仅使用 LEFT(A3,4)+0 转换回整数的前 4 个数字。将 2 个变量调暗为整数,Value1 来自第一行,Value2 来自下一行。然后运行一个 IF 语句,其中 If Value2 - Value 1 > 2 THEN 插入一个空白行(EntireRow.Insert Shift = xlDown 我认为是代码,如果错误请更正)。

然后我只需要对整个列重复,直到没有更多的班次开始时间可以分开。我正在考虑类似“直到 ISNUMBER = FALSE”这样的事情,或者我可以只为预定义的行数运行宏,我知道这些行数总是绰绰有余。

【问题讨论】:

  • 欢迎来到 Stack Overflow!看到有人对学习编码基础知识和做一些研究表现出兴趣总是很好的! Stack Overflow 并不是真正的“免费代码编写服务”,它更像是开发人员(任何经验水平)可以就特定问题提出特定问题、分享他们现有代码并(尽可能)解释什么是的地方到目前为止已经尝试过,到目前为止在哪里进行了研究,以及他们拥有什么以及他们“需要拥有”什么的例子。这使得该网站对遇到类似问题的其他人有用。
  • ...比我解释更好的是查看tour 以及How to Askminimal reproducible example 的方便提示。您是否在 Stack Overflow 上查看过类似的文章?这是另一个帮助您入门的搜索。如果您需要 VBA 或 Excel 速成课程,只需搜索即可找到一些优秀的教程和其他资源。您是否对特定问题以及您尝试过的一些示例有疑问?

标签: vba excel


【解决方案1】:

这个简短的宏会做你想做的事:

Sub insert()
    Dim n As Long, i As Long, t1 As String, t2 As String

    n = Cells(Rows.Count, 1).End(xlUp).Row
    For i = n To 2 Step -1
        t1 = Split(Cells(i, 1), "-")(0)
        t2 = Split(Cells(i - 1, 1), "-")(0)
        If t1 <> t2 Then Cells(i, 1).EntireRow.insert
    Next i
End Sub

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    相关资源
    最近更新 更多