如何循环通过合并的单元格并阅读每个文本

时间:2018-08-01 12:49:39

标签: excel vba excel-vba

我有一个名为Sheet3的Excel工作表,其中将单元格合并为11 x 6大正方形,并将它们对齐。这些块中有12个相互之间都相隔7个单元。我定义了每个块的名称,即“ Car_1”至“ Car_12”。我正在尝试编写一个代码块,在其中可以用Car_1到Car_12块创建一个数组,然后可以遍历每个块,确定每个块的右侧是否有文本写入该块,如果存在,则ID相反,如果该块中没有写入文本,则可以在图纸上其他位置的单元格中打印该块的右图(总共有12个块,因此输出范围可以在单元格“ C2”至“ C13”中)。在被关注的那个对象的右边,然后不给出任何输出,它将一直走到该行的下一个块,直到所有的块都通过。但是,无论最后哪个障碍都需要采取不同的措施。因此,当程序查看该块时,如果在其后一行的任何位置都没有文本的块,则它将打印“ Right End”而不是ID。这是我到目前为止所拥有的,但是当然不起作用:

Sub Code()

Dim wb As Workbook
Dim ws As Worksheet
Dim TxtRng As Range

Set wb = ActiveWorkbook
Set ws = wb.Sheets("Sheet3")

Dim Cars(12)
i = 1
For Cars = 1 To 12
If Application.WorksheetFunction.IsText(Range("Car_(i)")) Then

Set TxtRng = ws.Range("C2")
TxtRng.Value = "Yes" 'Car(i) ----> ID
Else
TxtRng.Value = ""    'Blank

        If Application.WorksheetFunction.IsText(Range("Car_12")) Then

        Set TxtRng = ws.Range("C13")
        TxtRng.Value = "Right End"

Next i

        End If
    End If
End Sub

在我的代码中,我只专注于查看Car_12时发生的情况,而不是关注代码块右侧没有文本块的任何地方。

1 个答案:

答案 0 :(得分:1)

您可以使用嵌套循环找到下一辆车。下面的代码在第一个For循环中循环通过1至11号汽车,并在此之后立即检查嵌套循环中的下一辆非空车。一旦找到下一辆汽车,它就会退出嵌套循环,并将该汽车的索引写入C2:C13范围内的相关行-这里我使用iOffset {1}}获取该行。

我发现构造第二个循环以获取“右端”是最容易的-只需从Car 12向后循环,然后寻找第一对汽车,最后一辆是空白,倒数第二辆不是。请注意,如果Car 12不是空白,它将自动为“右端”。

C1

屏幕截图-绝对简化了文件,但演示了概念。

可能性1 enter image description here

可能性2 enter image description here