Excel 检查每个工作表是否包含特定颜色,并粘贴到目标工作表中
对于工作簿中的每个工作表,我希望:Excel 检查每个工作表是否包含特定颜色,并粘贴到目标工作表中,excel,vba,Excel,Vba,对于工作簿中的每个工作表,我希望: -检查行是否包含颜色索引为-4142(黄色)的单元格 -如果是,请将行值复制并粘贴到ToDo列表中 我试过: 1) 对于每个循环,如下所示。 2) 我想我会坚持多久 For i = 1 To ThisWorkbook.Worksheets.Count Set Sh1 = Worksheets(i) 预期输出为: 如果活页1有3行-第1行:黄色,第2行:绿色,第3行:黄色 第2页有2行-第1行:黄色,第2行:蓝色 然后ToDo sheet将显示工作表1第1行、
-检查行是否包含颜色索引为-4142(黄色)的单元格
-如果是,请将行值复制并粘贴到ToDo列表中 我试过:
1) 对于每个循环,如下所示。
2) 我想我会坚持多久
For i = 1 To ThisWorkbook.Worksheets.Count
Set Sh1 = Worksheets(i)
预期输出为:如果活页1有3行-第1行:黄色,第2行:绿色,第3行:黄色
第2页有2行-第1行:黄色,第2行:蓝色
然后ToDo sheet将显示工作表1第1行、工作表1第3行、工作表2第2行的值
当前输出为“未获得信息”消息。是否需要整行显示为“黄色”?或者每行都有一个单元格 我想问的是,如果A1是黄色,B1是蓝色,C1是红色,D1是黄色,您只想将A1和D1从此行复制到工作表“ToDo”-复制到A1和B1或复制/粘贴整行
祝您度过愉快的一天这贯穿于每个工作表的usedrange中的每个单元格。如果内部颜色匹配,它将复制该行中的所有值,并将其放入待办事项列表工作表中。如果todo列表的行计数器在循环完成后没有更改,则会弹出“未获取任何信息”消息
Option Explicit
Sub Test()
Dim oToDo As Worksheet
Set oToDo = Worksheets("ToDo")
Dim oToDoRow As Long
oToDoRow = 2 ' Whatever row your "todo" data starts on
Dim oCell As Range
Dim oCurWS As Worksheet
Dim oPrevRow As String
For Each oCurWS In ThisWorkbook.Worksheets
If oCurWS.Name <> "ToDo" Then
For Each oCell In oCurWS.UsedRange
' I used Interior Color you should be able to use colorindex in the same way
If oCell.Interior.Color = 65535 Then
If oPrevRow <> oCurWS.Index & "_" & oCell.Row Then
oToDo.Rows(oToDoRow).Value = oCurWS.Rows(oCell.Row).Value
oPrevRow = oCurWS.Index & "_" & oCell.Row
oToDoRow = oToDoRow + 1
End If
End If
Next
End If
Next
' Match oToDoRow with whatever is set as default at the top
If oToDoRow = 2 Then MsgBox "No info obtained"
End Sub
选项显式
子测试()
Dim oToDo As工作表
设置oToDo=工作表(“ToDo”)
暗淡的耳垂和长的一样
oToDoRow=2'无论您的“待办事项”数据从哪一行开始
Dim oCell As系列
Dim oCurWS作为工作表
将oPrevRow设置为字符串
适用于本工作簿中的每位观众。工作表
如果是oCurWS.Name“ToDo”,那么
对于oCurWS.UsedRange中的每个oCell
“我使用了内饰颜色,您应该能够以同样的方式使用colorindex
如果oCell.Interior.Color=65535,则
如果oPrevRow oCurWS.Index&“&”oCell.Row,则
oToDo.Rows(oToDoRow).Value=oCurWS.Rows(oCell.Row).Value
oPrevRow=oCurWS.Index&“&”oCell.Row
奥托多罗=奥托多罗+1
如果结束
如果结束
下一个
如果结束
下一个
'将oToDoRow与顶部设置为默认值的内容匹配
如果oToDoRow=2,则MsgBox“未获得任何信息”
端接头
如果一行中有多个单元格高亮显示,则更新以防止该行被多次列出。这不是答案。用于澄清。我需要有50个声誉来评论别人的帖子,所以这就是为什么我发布“答案”,然后获得这50个声誉
Option Explicit
Sub Test()
Dim oToDo As Worksheet
Set oToDo = Worksheets("ToDo")
Dim oToDoRow As Long
oToDoRow = 2 ' Whatever row your "todo" data starts on
Dim oCell As Range
Dim oCurWS As Worksheet
Dim oPrevRow As String
For Each oCurWS In ThisWorkbook.Worksheets
If oCurWS.Name <> "ToDo" Then
For Each oCell In oCurWS.UsedRange
' I used Interior Color you should be able to use colorindex in the same way
If oCell.Interior.Color = 65535 Then
If oPrevRow <> oCurWS.Index & "_" & oCell.Row Then
oToDo.Rows(oToDoRow).Value = oCurWS.Rows(oCell.Row).Value
oPrevRow = oCurWS.Index & "_" & oCell.Row
oToDoRow = oToDoRow + 1
End If
End If
Next
End If
Next
' Match oToDoRow with whatever is set as default at the top
If oToDoRow = 2 Then MsgBox "No info obtained"
End Sub