如果同一行的AI列中的单元格值=“YES”,我想将工作表“Recalculated FS”中的A,W和G列中的单元格复制到另一个名为“Tempo”的工作表。
这是我现在使用的代码,
Sub dural()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "Tempo"
For Each Cell In Sheets("Recalculated FS").Range("AI:AI")
If Cell.Value = "YES" Then
Sheets("Recalculated FS").Range("A:A").Copy Sheets("Tempo").Range("B:B")
Sheets("Recalculated FS").Range("W:W").Copy Sheets("Tempo").Range("A:A")
Sheets("Recalculated FS").Range("G:G").Copy Sheets("Tempo").Range("C:C")
End If
Next
End Sub
答案 0 :(得分:0)
1)您可以使用以下内容复制列:
Sheets("Recalculated FS").Range("A:A").Copy Sheets("Tempo").Range("B:B")
Sheets("Recalculated FS").Range("W:W").Copy Sheets("Tempo").Range("A:A")
Sheets("Recalculated FS").Range("G:G").Copy Sheets("Tempo").Range("C:C")
注意:由于OP已更改其代码,上述内容现在无关紧要。
2)要更改“速度”表格中的标题,您可以说:
Sheets("Tempo").Range("A1").Value = "Heading for column A"
等
注意:上述观点现在无关紧要,因为OP已从他的帖子中删除了这个问题。
3)您的For Each Cell In Sheets("Recalculated FS").Range("AI:AI")
循环将执行AI列中每个单元格循环的内容,这意味着,如果列AI包含10个单元格,其值为“是”,三列将被复制10次(每次复制完全相同的东西到完全相同的地方)。 (并且它将经历许多次,数次次查看空单元并确定它不需要做任何事情 - 但仍需要时间来决定它。)
注意:以上几点仍然相关。
答案 1 :(得分:0)
以下是一些搜索YES值的代码。
如果找到一个YES,您可以复制列。
Sub dural()
ThisWorkbook.Sheets("Recalculated FS").Select
Columns("AI:AI").Select
Set cell = Selection.Find(What:="YES", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
'Search the column for a YES value
If cell Is Nothing Then
'Do nothing if YES isn't found
Else
'Copy columns if YES is found
End If
If Len(ActiveSheet.Range("A1").Value) <> 0 Then
Sheets("Tempo").Name = ActiveSheet.Range("A1").Value
Else
'Don't change the name
End If
'Rename the Tempo worksheet based on a cell value
End Sub