如何从另一张表中获取完全匹配的数据?
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中往一个表中插入数据但是其中一列需要从另一张表查状态,求指导