【发布时间】:2021-01-04 16:27:32
【问题描述】:
好久不见。我正在处理一个小任务,不知何故我无法绕过我的头。我有一个巨大的 Excel 表(大约 4000 行),它正在被拆分并发送给人们 - 他们在特定行中从 K 列到 T 列标记黄色或红色单元格,并每周将其发回,直到范围 K 到 T在这 4000 行中,具有“X”值(表示已发送)被标记为黄色或红色(已收到或未收到)。 excel 工作表在 J 列中具有唯一值(所以我使用 MATCH)。因此,通过使用此列 J,我将遍历数据(主表)中的每一行,并检查是否在输入表中找到了(用户返回的东西),如果找到,我去复制他们的颜色标记到原始数据表。这非常适合那些黄色和红色的颜色,子本身运行速度很快 - 只是想知道是否没有错误(上次我做一些宏是 3 年前)。 问题 - 如果单元格为空,则将其作为白色粘贴回数据表,并且 excel 的原始网格消失(难以阅读)。谁能指出我正确的方向?谢谢!
Sub test4()
Application.ScreenUpdating = False
Set dat = Sheets("Data")
n = dat.Range("J" & Rows.Count).End(xlUp).Row
Dim test As Long
For i = 2 To n
inputrow = 0
On Error Resume Next
inputrow = Application.WorksheetFunction.Match(Worksheets("Data").Range("J" & i).Value, Sheets("Input").Range("J:J"), 0)
On Error GoTo 0
If inputrow > 0 Then
o = dat.Range("A" & Rows.Count).End(xlUp).Row + 1
dat.Range("K" & i).Interior.Color = Sheets("Input").Range("K" & inputrow).DisplayFormat.Interior.Color
dat.Range("L" & i).Interior.Color = Sheets("Input").Range("L" & inputrow).DisplayFormat.Interior.Color
dat.Range("M" & i).Interior.Color = Sheets("Input").Range("M" & inputrow).DisplayFormat.Interior.Color
dat.Range("N" & i).Interior.Color = Sheets("Input").Range("N" & inputrow).DisplayFormat.Interior.Color
dat.Range("O" & i).Interior.Color = Sheets("Input").Range("O" & inputrow).DisplayFormat.Interior.Color
dat.Range("P" & i).Interior.Color = Sheets("Input").Range("P" & inputrow).DisplayFormat.Interior.Color
dat.Range("Q" & i).Interior.Color = Sheets("Input").Range("Q" & inputrow).DisplayFormat.Interior.Color
dat.Range("R" & i).Interior.Color = Sheets("Input").Range("R" & inputrow).DisplayFormat.Interior.Color
dat.Range("S" & i).Interior.Color = Sheets("Input").Range("S" & inputrow).DisplayFormat.Interior.Color
dat.Range("T" & i).Interior.Color = Sheets("Input").Range("T" & inputrow).DisplayFormat.Interior.Color
End If
Next i
End Sub
【问题讨论】:
-
我猜你可以检查
DisplayFormat.Interior.Color = xlNone(未经测试)。 -
如果单元格没有着色,
DisplayFormat.Interior.ColorIndex = xlNone将为 True。除非您使用条件格式,否则您不需要DisplayFormat -
你好@BigBen & Tim - 你能告诉我,我应该如何改变代码,这样它就不会将空白单元格复制到“白色”?这是一个IF函数吗?那将是很多如果的:) 谢谢!