比较可变列数中的单元格

Comparing Cells in a variable number of Columns

所以我被要求比较图表中的数据,其中列数可以可变,目前最多 20,但我被告知这可能会改变,所以我想保持动态可能。

目标是确保一行中的所有单元格都包含完全相同的字符串,或者为空白。因此,如果有五列,其中三列有数据 "Good",另外两列为空白,那没问题。

图表将始终从左上角开始,并且始终具有 header 行和行名称。

我想我会将每个单元格与每行中的第一个单元格进行比较,但我似乎无法弄清楚如何比较可变单元格。

我对使用 VBA 还很陌生,完全是自学的,所以我在这里可能走错了路。

这是我的示例代码,我知道我需要执行几个 Do 循环才能使其正常工作,但我想先让这部分工作。

Sub Row_Checker()

    Dim Col_Count As Integer
    Dim I As Integer


    Range("a1").Select
    Range(Selection, Selection.End(xlToRight)).Select


    Col_Count = Application.WorksheetFunction.CountA(Selection)


    Selection.End(xlToRight).Select
    ActiveCell.Offset(1, 1).Range("A1").Select

    For I = 2 To Col_Count
        If ("B" & (ActiveCell.Row)) = ("B" & (ActiveCell.Row).Offset(0, I) then


End Sub

我将针对更高效的代码提出一些建议。我还将帮助您编写循环。

首先,尽可能避免使用select。它效率低下并且使代码更难阅读并且更容易出错。在这里,我没有选择,而是将行第一列的值放在一个名为 val1 的变量中,然后循环遍历其他列,将它们的值放在一个名为 valn.[=17= 的变量中]

由于可能会丢失数据,我使用查找函数找到填充的最低行,然后将其分配给变量 lRow

对于下一部分,您必须在循环中执行循环。在外循环中,您将遍历行,在内循环中,您将遍历列。因此,您将转到一行,遍历所有列,然后转到下一行并执行相同的操作。

您可以使用 cells(I,J) 在循环中的不同单元格之间移动。这是循环的强大部分。

如果单元格值匹配或为空,您可以填写您希望发生的事情,如果不匹配则您希望它做什么。

此外,请确保将任何 sheet1 更改为您正在使用的实际 sheet 名称。

见以下代码:

Sub row_checker()

    Dim Col_Count As Integer
    Dim lRow As Integer
    Dim I As Integer
    Dim J As Integer
    Dim val1 As String
    Dim valn As String
    Dim output As String



    Col_Count = Application.WorksheetFunction.CountA(Rows(1))

    lRow = Cells.Find(What:="*", _
                    After:=Range("A1"), _
                    LookAt:=xlPart, _
                    LookIn:=xlFormulas, _
                    SearchOrder:=xlByRows, _
                    SearchDirection:=xlPrevious, _
                    MatchCase:=False).Row

        For I = 2 To lRow
            For J = 2 To Col_Count
            val1 = Cells(I, 1).Value
            valn = Cells(I, J).Value
                If val1 = valn Or valn = Empty Then
                Else: Cells(I, J).Interior.Color = 65535
                End If
            Next J
        Next I

End Sub

恭喜你自学成才。我在 VBA 和编程方面也是 100% 自学的。我不是专家,但一路上我学到了很多东西。我分享的是一些我花了很长时间才学会的东西。祝你好运,如果您还有其他问题,请告诉我。