【问题标题】:Create a header by determining when two cells do not match and pasting header from another sheet通过确定两个单元格何时不匹配并从另一个工作表粘贴标题来创建标题
【发布时间】:2019-04-10 22:31:35
【问题描述】:

我正在寻找能够在 C 列的第 9 行中开始搜索不等于下面 2 行的单元格的单元格。例如。 C9 C11、C10 C12 等。然后从另一个工作表中复制一个单元格并将其粘贴到 A 列中的第一个差异所在的同一行中。例如。如果 C9 C11,则从 Sheet2 粘贴到 A11。目的是在已经对数据进行格式化和排序后插入一个新的标题,下面是我尝试过的众多变体之一,只接收错误或空白输入。

任何帮助将不胜感激。

Dim iRow2 As Integer, iCol2 As Integer, iRow3 As Integer, iCol3 As Integer
Dim oRng2 As Range
Dim oRng3 As Range
Dim qqq As Range

Set oRng2 = Range("C9:C80")
Set oRng3 = Range("A9:A80")

iCol2 = oRng2.Column
iCol3 = oRng3.Column

For Each qqq In oRng2
Do
If qqq.Cells(oRng2, 3) <> qqq.Cells(oRng2 + 2, 3) Then
 ThisWorkbook.Worksheets("Sheet1").Range("N1").Copy Destination = Sheets("Sheet2").Range(oRng2 + 2, 1)

End If
Loop While Not Cells(iRow2, iCol2).Text = ""
Next

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果可以,我建议您使用列号。然后你可能会发现你需要的索引比你当前的代码少得多,而且你不要忘记更新索引(比如当前的iRow2iCol2)很容易。

    Dim dataSheet As Worksheet
    Dim headerSheet As Worksheet
    
    Set dataSheet = ActiveWorkbook.Sheets(2)
    Set headerSheet = ActiveWorkbook.Sheets(1)
    
    Dim r As Integer
    For r = 9 To 80
      If dataSheet.Cells(r, 3).Value <> dataSheet.Cells(r + 2, 3).Value Then
        dataSheet.Cells(r, 1).Value = headerSheet.Cells(1, 14).Value
      End If
    Next r
    

    这应该会给你一个好的开始。我不知道确切的内部循环是要检查的,因为你从来没有接触过iRow2iCol2,它会尝试检查 R0C0 处的单元格,这是一个无效地址。如果您想确保您比较的行不为空,请首先在 For 循环中检查:

    ...
    For r = 9 To 90
      If dataSheet.Cells(r + 2, 3).Value = "" Then
        Exit For
      ElseIf dataSheet.Cells(r, 3).Value <> dataSheet.Cells(r + 2, 3).Value Then
        dataSheet.Cells(r, 1).Value = headerSheet.Cells(1, 14).Value
      End If
    Next r
    

    【讨论】:

    • 这太棒了!非常感谢你的帮助。我仍然遇到的一个问题是它不会在第一次实例中停止并多次发布标题,您对解决这个问题有什么建议吗?
    • @jdoe2021 您是否希望它在第一次将第一个标题添加到 A 列后立即停止,以便只添加一个标题(如果有)?
    • @jdoe2021 在这种情况下,在dataSheet.Cells(r, 1).Value = headerSheet.Cells(1, 14).Value 行之后添加Exit For
    • 现在运行良好。再次感谢您的所有帮助,我真的很感激。
    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多