2014-10-11 50 views
0

我有这个大型的Excel电子表格大约10,000行和5,000个唯一ID。我想要做一个基于数据库的搜索和替换。在Excel中如何使用库搜索和替换列上的字符串

FROM:

enter image description here

enter image description here

TO:

enter image description here

我知道这可以通过使用快速搜索一个完成nd替换为excel,但如果数据有大约5,000个唯一的agent-id,那么这可能是一项艰巨的任务。

任何人都有一个明智的建议?

在此先感谢!

+0

什么样的替换是你的意思?对于性能明智的查询,我只需在Excel中使用SQL:http://blog.tkacprow.pl/excel-sql-add-in-free/。它将比任何VBA更有效率。您也可以使用外部数据创建查询 - >从其他来源 - > Microsoft Query – 2014-10-11 12:15:45

+0

我修改了示例。我知道,SQL可以很容易地做到这一点。但是,SQL在这里不可用。 – 2014-10-11 12:19:58

+0

我不明白?意思在哪里?在Excel中,您可以轻松使用SQL。还请具体说明你的意思。 – 2014-10-11 12:57:38

回答

1

我能够做一个vb宏代码来完成我所需要的。我可能需要调整一些特定的单元格,但它现在可行。

Sub FindAndReplace() 
' FindAndReplace Macro 
' @author Louie Miranda 
' Ability to find the range of ids against another worksheet 
' and insert the name on the main sheet 
' 
    ' Loop over the current worksheet 
    For Each c In Worksheets("RECORDS").Range("A3:A7").Cells 

     ' Go to Agents sheet 
     Sheets("AGENTS").Select 

     ' Do a search 
     Cells.Find(What:=c, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ 
     :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False).Activate 

     Application.CutCopyMode = False 

     ' Choose beside the column to copy 
     ActiveCell.Offset(rowOffSet:=0, columnOffset:=-1).Activate 
     Selection.Copy 

     ' Back to records sheet 
     Sheets("RECORDS").Select 

     ' Paste on the current row, plus arrange on which row/offset 
     Range(c.Address).Offset(0, 1).Select 
     ActiveSheet.Paste 

    Next c 
End Sub 
+0

此代码的一个问题是,如果没有值匹配,一旦它试图找到。我目前正在努力弄清楚。 – 2014-10-12 07:15:03

1

这里是一些VBA,它将根据另一个表中的值列表在一张表中找到并替换。

Sub multiFindandReplace() 
Dim myList, myRange 
Set myList = Sheets("config").Range("A1:B9") 
Set myRange = Sheets("Sheet1").Range("B2:I1000") 
For Each cel In myList.Columns(1).Cells 
myRange.Replace What:=cel.Value, Replacement:=cel.Offset(0, 1).Value, LookAt:=xlPart 
Next cel 
End Sub 

这是在sheet1中搜索单元格B2:I1000。配置表包含2列,在列A中查找的值,以及如果找到它们,则将用该列的列B中的值替换它们。

+0

感谢提示Bilbo Baggins – 2014-10-12 06:29:06