excel - 通过确定两个单元格何时不匹配并从另一个工作表粘贴标题来创建标题
问题描述
我正在寻找能够开始在 C 列的第 9 行中搜索不等于下面 2 行的单元格的单元格。例如 C9 <> C11、C10 <> C12 等。然后从另一个工作表中复制一个单元格并将其粘贴到 A 列中的第一个差异所在的同一行中。EG 如果 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
解决方案
如果可以的话,我建议你使用列号。然后你可能会发现你需要的索引比你当前的代码少得多,而且你不要忘记更新索引(比如 currentiRow2
和iCol2
)那么容易。
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
这应该给你一个好的开始。我不知道内部循环到底是用来检查的,因为你从来没有接触过它iRow2
,iCol2
它会尝试检查 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
推荐阅读
- jquery - .addClass 和 .removeClass 方法的 Jquery 问题
- wcf - 调用者未通过同一台机器上的服务进行身份验证
- android - 如何在房间数据库中进行搜索
- html - 使用 Flexbox 并排创建盒子 CSS
- node.js - 如何使用 v8::String::NewFromUtf8 的 Maybe 版本?
- javascript - 为什么我不能将 key 的值放入我的字符串中,它一直取值 +key+
- zap - ZAP 定义更新频率和与 NIST 的相关性(如果有)
- r - 如何修复 ggplot2 的 geom_hex 中的纵横比?
- php - PHP Mysql查询数组分配给变量并在另一个数组中使用
- javascript - 将字符串转换为具有多个条目的单个数组