作为Excel中VBA的新用户,我正在尝试完成以下操作:
1)检查条件中名为“索引”的工作表中的一列中的多行(我的条件是在列J中的单元格中查找字母Y)
2)将符合条件的每一行中选定的列复制到VBA代码中编程的另一个表格,例如, “Sheet2的”
3)保留复制的单元格的格式,特别是公式和粗体字。
我之前在VBA code to copy selected columns from rows that meet a condition to another sheet问了一个问题,并且ATl LED提供了以下代码,它可以工作和复制值而不是格式化(我忘了在我的问题中包含这个)
我试验了代码,并在IF语句中调整了.Value到.FormulaR1C1。公式被复制并在复制到的工作表中处理,即Sheet2,但我无法使格式化工作。
我错过了什么?
Sub try3()
Dim i, x As Long
Dim Y as String
Dim ws1 As Worksheet: Set ws1 = ActiveWorkbook.Sheets("Index")
Dim ws2 As Worksheet: Set ws2 = ActiveWorkbook.Sheets("Sheet2")
x = 5
Y = "Y"
For i = 2 To 500:
If ws1.Cells(i, 10) = Y Then
Range(ws2.Cells(x, 1), ws2.Cells(x, 7)).Value = Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Value
x = x + 1
End If
Next i
End Sub
谢谢, JohnM
答案 0 :(得分:1)
放置以下代码行:
Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Copy Range(ws2.Cells(x, 1), ws2.Cells(x, 7))
而不是你的行:
Range(ws2.Cells(x, 1), ws2.Cells(x, 7)).Value = Range(ws1.Cells(i, 3), ws1.Cells(i, 9)).Value
如果在ws1表中有任何你不想复制的公式(但是值),或者两者保持相同的顺序。