【发布时间】:2020-08-07 03:20:23
【问题描述】:
我在 1 列中有 1000 行数据,我需要根据每行粗体转换成列。粗体之间的行数不一致,与字符串值相同。
我创建了一个在测试前 100 行时完美运行的简单代码。但是当试图通过整个列表或其他一些部分(甚至 50 行)运行它时,它只是在运行时卡住了,所以我必须通过任务管理器非常出色(没有错误消息)。
Sub Transpose_by_bold()
Dim x, y As Integer
y = 1
For x = 1 To 2000
If Range("B" & x).Font.Bold = True And Range("B" & x + 1).Font.Bold = True Then y = 1
If Range("B" & x).Font.Bold = True And Range("B" & x + 1).Font.Bold = False Then
Range("B" & x + 1).Cut Range("B" & x).Offset(0, y)
Range("B" & x + 1).EntireRow.Delete
y = y + 1
x = x - 1
End If
Next x
End Sub
如果您能告诉我这里出了什么问题,我将不胜感激?
【问题讨论】:
-
我建议的一件事是向后循环,在删除行时始终建议这样做。
-
我正在寻找转置部分,但我什么也看不到。 “转置”是什么意思?
-
如果
B1是粗体而B2不是,您将从x中减去1,而x将为零,这是不可能的。测试逻辑结果的一种方法是使用F8单步执行代码并观察值如何变化,以查看它是否在执行您想要的操作,然后再应用到 2000 行。