通过确定两个单元格何时不匹配并从另一张纸粘贴标题来创建标题

时间:2019-04-10 22:31:36

标签: excel vba

我正在寻找能够开始在C列的第9行中搜索不等于下面两行的像元的像元的东西。例如。 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

1 个答案:

答案 0 :(得分:0)

如果可以的话,我建议您使用列号。这样一来,您可能会发现所需索引比当前代码少得多,并且您不会忘记轻松地更新索引(例如当前的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