我有一个包含大约 55 个工作表的 Excel 电子表格。大多数工作表有 100 多行。我正在创建一个符合特定条件的数字列表。我浏览了电子表格并用红色突出显示了我需要的所有数字。现在我想创建一个唯一值列表。
我想制作某种公式/宏/VB 代码,遍历 55 个工作表中的每一个,并列出所有以红色突出显示的数字。有没有办法做到这一点,而不需要浏览每个工作表并复制红色单元格,然后将它们粘贴到列表中?
(下一步将是消除重复的值,但我可能可以处理该步骤。)
答案1
可能是这样的?它将在所有工作表中搜索所有使用的单元格和行。那些与背景为红色相匹配的单元格和行将被复制到数组中,然后输出到新的工作表中。我没有对重复值进行排序/清理。不过,这应该不太难。顺便说一句,它会在一行中输出结果,也许你最好将其输出到一列中。可能通过创建一个每行 1 个值的 2D 数组来实现。
我猜想如果可以使用 Application.FindFormat 来完成此操作......
Sub FindReds()
Dim myArray() As Variant
Dim i As Integer
Dim outWS As Worksheet
For Each ws In ActiveWorkbook.Worksheets
For Each Cell In ws.UsedRange.Cells
If Cell.Interior.ColorIndex = 3 Then
ReDim Preserve myArray(i)
myArray(i) = Cell.Value
i = i + 1
End If
Next
Next
Set outWS = ActiveWorkbook.Sheets.Add()
outWS.[A1].Resize(1, UBound(myArray)) = myArray
End Sub