工作表中的颜色单元基于来自同一工作簿中另一个工作表的数据
我有以下工作表称为数据 :
在同一个工作簿中,我有另一个名为Employee Database的工作表。
在Excel中,如果“员工电子邮件地址”不在“ 员工数据库 ”中,如何将“员工电子邮件地址”和相应的“公司”和“公司URL”
换句话说,我试图让员工数据库工作表看起来像这样:
我刚刚举了一个例子,实际上我有超过10,000个单元的数据来做到这一点。 我开始这样做手动,并意识到这将需要我永远。
我很想知道是否有一个macros可以在Excel中做到这一点?
帮助将非常感激! 我有上面的截图示例工作簿可在这里下载: http : //www.mediafire.com/?dttztp66dvjkzn8
这是你正在尝试? 这将创build一个带有输出的新表“Desired Result”。 将其粘贴到模块中。
Option Explicit Sub Sample() Dim wsData As Worksheet, wsDB As Worksheet, wsO As Worksheet Dim lRow As Long, i As Long Dim clrRng As Range Set wsData = Sheets("Data") Set wsDB = Sheets("Employee Database") Set wsO = Sheets.Add On Error Resume Next Application.DisplayAlerts = False Sheets("Desired Result").Delete Application.DisplayAlerts = True On Error GoTo 0 With wsO .Name = "Desired Result" wsData.Cells.Copy .Cells lRow = .Range("B" & .Rows.Count).End(xlUp).Row For i = 2 To lRow If .Range("A" & i).Value = "" Then .Range("A" & i).Value = .Range("A" & i - 1).Value Next i For i = 1 To lRow If Application.WorksheetFunction.CountIf(wsDB.Columns(3), .Range("A" & i).Value) = 0 Then If clrRng Is Nothing Then Set clrRng = .Rows(i) Else Set clrRng = Union(clrRng, .Rows(i)) End If End If Next i If Not clrRng Is Nothing Then clrRng.Interior.ColorIndex = 3 For i = lRow To 2 Step -1 If .Range("A" & i).Value = .Range("A" & i - 1).Value Then .Range("A" & i).ClearContents Next i End With End Sub
您可以在不使用VBA的情况下执行此操作,但需要稍微更改Data
表上的Data
。
我不推荐Excel中的数据存储的“数据透视表”或“小计”式,在这种情况下, 只需在一列中input一个主键,然后在其旁边填入相关的数据,直到下一个主键。
像合并的单元格一样,这只会在以后重新组织数据时才会导致问题。
以下是我所做的:
在数据表上填写缺less的电子邮件地址
将A
列中的单元格A2
全部向下突出显示,直到列A
中的数据结束。 因此,如果您在单元格B2:B100
有公司名称,但只有A2:A98
电子邮件,则应突出显示A2:A100
。 这是因为我们正在填写每行可用数据中的电子邮件地址。
转到编辑 » 查找并select » 转到特殊 ,selectBlanks
,然后单击OK
。
现在select空格,input=
↑ (向上箭头),然后按Ctrl + Enter 。 A列中的空白单元格将填写缺less的电子邮件地址。 突出显示列A,复制并粘贴值。
创build电子邮件的dynamic命名范围
在“ Employee Database
表上,在“引用”框中使用以下公式创build一个名为“电子邮件”的命名范围:
=OFFSET('Employee Database'!$C$1,1,0,COUNTA('Employee Database'!$C:$C)-1,1)
添加条件格式
在Data
表中,突出显示A2:C whatever
(例如: A2:C20000
),然后转到主页 » 样式 » 条件格式并使用以下公式:
=ISNA(MATCH($A2,Emails,0))
select所需的配色scheme,然后单击OK
。 以下是我的计算机上的一些示例数据的外观:
有一些小的限制:
-
Data
表中的A栏不能留空。 - 在两行数据之间的
Employee Database
表中不能有空行。 这是由于dynamic范围的工作方式。
优点
这种方法的好处是,海事组织是巨大的。
- 您可以在“员工数据库”表中添加或删除行,并且突出显示会自动调整。 例如:如果我添加了d@gmail.com并删除了c@nbc.com,则
Data
表格上的格式会立即更新。
- 您不必更改现有的工作表结构(除填写缺less的数据并添加范围名称外)。 不需要额外的工作表。
- 您的工作簿可以保持无VBA(如果它还没有)。