工作表中的颜色单元基于来自同一工作簿中另一个工作表的数据

我有以下工作表称为数据在这里输入图像说明

在同一个工作簿中,我有另一个名为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(如果它还没有)。