如果Sheet2中的C列包含字符串“ciao”,则复制到D列,A列与该单元格匹配。
更具体地说,这是一个例子:
col A:
row1: 1
row2: 2
row3: 3
row4: 4
col C:
row1: one
row2: ciao
row3: three
row4: ciao
col D: (what I want)
row1:
row2: 2
row3:
row4: 4
这是我复制整行的代码。但我想只复制匹配的A列:
Dim bottomC As Integer
bottomC = Sheets("Sheet2").Range("C" & Rows.Count).End(xlUp).Row
Dim c As Range
For Each c In Sheets("Sheet2").Range("C1:C" & bottomC)
If c.Value = "ciao" Then
c.EntireRow.Copy Worksheets("Sheet2").Range("D" & Rows.Count).End(xlUp).Offset(1)
End If
next c
谁能帮帮我?
答案 0 :(得分:1)
这遍及C的每个实例,如果c匹配" Ciao"它将单元格2的值向左(A列)复制到右侧的单元格(D列)
您还应该使用更多描述性变量名称&在模块的开头声明所有变量 - 这样可以更容易地发现任何错误。
我会按如下方式编写此代码:
Dim lastrow As Integer
Dim Myrange As Range
lastrow = Sheets("Sheet2").Range("C" & Rows.Count).End(xlUp).Row
For Each Myrange In Sheets("Sheet2").Range("C1:C" & lastrow)
If Myrange = "ciao" Then Myrange.Offset(0, 1) = Myrange.Offset(0, -2)
Next Myrange
答案 1 :(得分:1)
Dim bottomC As Integer
bottomC = Sheets("Sheet2").Range("C" & Rows.Count).End(xlUp).Row
Dim cRow As Long
Dim c As Range
For Each c In Sheets("Sheet2").Range("C1:C" & bottomC)
If c.Value = "ciao" Then
cRow = c.Row
Sheets("Sheet2").Range("D" & cRow).Value = c.Offset(, -2).Value
End If
next c
这应该有效。
编辑:我测试了c.Row并且它有效。