如何从另一张表中获取完全匹配的数据?

Posted

技术标签:

【中文标题】如何从另一张表中获取完全匹配的数据?【英文标题】:How to get exact match data from another sheet? 【发布时间】:2020-05-09 09:40:23 【问题描述】:

我在“数据库”工作表中有数据,如下所示:

我编写了一个简短的代码来从“数据库”表中获取与某些条件匹配的数据并将其粘贴到另一个表“SelectedRecords”

这是我的代码

Sub CopyData()
Dim db As Worksheet
Dim rcd As Worksheet

Set db = ThisWorkbook.Sheets("Database")
Set rcd = ThisWorkbook.Sheets("SelectedRecords")

db.Range("A1:C7").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=Range("$A$1:$A$2"), _
    CopyToRange:=rcd.Range("$A$4:$B$4")

End Sub

此代码正在运行,但我得到了一些额外的记录,如下所示:

我正在寻找 Name = "Jack" 的数据,但在输出中我得到的所有数据都以 "Jack" 开头。如何获取与 A2 单元格中提到的标准完全匹配的记录。在这种情况下,我的输出应该只为“Jack”提供一条记录。

其他两条记录“JackSparrow”和“Jackson”应该被过滤掉。

【问题讨论】:

【参考方案1】:

默认情况下,您将获得所有匹配项。现在SelectedRecords 中的单元格A2 具有Jack。要获得完全匹配,请将其更改为="=Jack",如下所示,然后重试。

如果您不想每次都输入“=”,则可以使用如下所示的辅助列

【讨论】:

【参考方案2】:

作为@Siddharth_Rout 的回答,您可以在 VBA 中像以下代码一样使用它:

Dim db As Worksheet
Dim rcd As Worksheet

Set db = ThisWorkbook.Sheets("Database")
Set rcd = ThisWorkbook.Sheets("SelectedRecords")

' Here a "=" will added at beginning if it's not typed
If (Left(rcd.Range("$A$2").Value, 1) <> "=") Then
    rcd.Range("$A$2").Value = "'=" & rcd.Range("$A$2").Value
    '                          ^ this quote is required to avoiding calculation 
End If

db.Range("A1:C7").AdvancedFilter _
    Action:=xlFilterCopy, _
    CriteriaRange:=rcd.Range("$A$1:$A$2"), _
    CopyToRange:=rcd.Range("$A$4:$B$4")

【讨论】:

以上是关于如何从另一张表中获取完全匹配的数据?的主要内容,如果未能解决你的问题,请参考以下文章

两个表匹配,匹配上把一张表的值复制到另一张表的sql语句怎么写

根据查找值将值从一张表匹配并粘贴到另一张表中

我需要使用索引和匹配从另一列条件匹配的列中提取数据

sql中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导

两张表 在一张表中插入数据时要使用触发器也更新另一张 有错误

在 MySQL 中,如何将一张表的内容复制到同一个数据库中的另一张表中?