【发布时间】:2018-07-18 18:51:57
【问题描述】:
我的代码在某一列中包含空白单元格。我希望能够选择仅空白单元格的未知长度(偏移 2 列)。我目前有多个 if 语句,它们根据空格数进行过滤,但可变的空格数可能会使这变得过于复杂。
示例: 当它遇到这两个空白(6 和 7)时,我想连接这些行(6 和 7)的右侧两列内容,并粘贴到上面的单元格和修订/cmets/ 右侧的一列空白(然后我删除修订/cmets 的行,所以在这里,6 和 7 被删除)。这部分我已经弄清楚了,从图片1到2。
这些空白单元格自始至终随机出现,长度可变,有时没有修订/cmets,有时是两行、五行等...
因此,与其有很多 if 语句来说明有多少行是修订/cmets,我正在寻找可以选择任何可变长度的空白单元格并将该信息全部传输到一个单元格的代码(直接在右边的那个)的原始信息行)。
到目前为止,这是我的代码中执行此操作的部分:
Sub BlankCell()
'Delete all header rows (except top row)
Dim i, LastRow As Integer
i = 2
LastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
Do While i <= LastRow
If Cells(i, 2).Value = "Line" Then
Rows(i).EntireRow.Delete
End If
i = i + 1
Loop
'Select first cell
Range("C2").Select
'Loop through column C to find empty cells
'Copy and paste column E contents (concatenated) to column F and delete row(s) of clarifications
Do While Not IsEmpty("C")
'If there are three rows of comments
If IsEmpty(ActiveCell.Offset(1, 0)) And IsEmpty(ActiveCell.Offset(2, 0)) Then
Range(ActiveCell.Offset(0, 2), Range(ActiveCell.Offset(1, 2), ActiveCell.Offset(2, 2))).Select
ActiveCell.Offset(-1, 1) = ActiveCell.Offset(0, 0).Value & Chr(10) & ActiveCell.Offset(1, 0).Value & Chr(10) & ActiveCell.Offset(2, 0).Value
Selection.EntireRow.Delete
'If there are two rows of comments
ElseIf IsEmpty(ActiveCell.Offset(1, 0)) Then
Range(ActiveCell.Offset(0, 2), ActiveCell.Offset(1, 2)).Select
ActiveCell.Offset(-1, 1) = ActiveCell.Offset(0, 0).Value & Chr(10) & ActiveCell.Offset(1, 0).Value
Selection.EntireRow.Delete
'If there is one row of comments
Else
ActiveCell.Offset(0, 2).Select
ActiveCell.Offset(-1, 1) = ActiveCell.Offset(0, 0).Value
Selection.EntireRow.Delete
End If
'Find next blank in column C
NextBlank = Range("C1:C" & Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row
Range("C" & NextBlank).Select
'Exit loop once to the end of the table
If IsEmpty(ActiveCell.Offset(0, -1)) And IsEmpty(ActiveCell.Offset(1, -1)) Then
Exit Do
End If
Loop
End Sub
提前致谢!
【问题讨论】: