怒龙战记宠物属性:如何将EXCEL表按另一个EXCEL表中的内容进行搜索,然后将结果复制到新的工作表中?

来源:百度文库 编辑:高考问答 时间:2024/05/03 23:06:05
我现在有一个“客户资料详表”和一个“客户抽样检查表”,我需要在“客户资料详表”中查找“客户抽样检查表”中的所有客户记录,并将找到的这些记录按“客户资料详表”的格式全部复制到一个新的工作表中。

由于“客户资料详表”中的记录有3000多条,“客户抽样检查表”中的记录也有1000多条,如果用查找命令一个一个的找然后再一一复制到新的工作表中的话,工作量未免太大了,所以我想问问ECXEL有没有更方便的办法来完成我要作的工作呢?

你的两个表中必须有一列的内容是相同的(不知你是客户名还是客户编号),这样才能关联查找。
1、先将两个表具有相同内容的那一列(客户名)放在最前面(A列),然后将两个表按A列递增排序。
2、将“客户抽样检查表”的A列复制到新工作表的A列。
3、在新工作表的B1单元格输入如下公式:
=IF($A1="","",VLOOKUP($A1,客户资料详表!$A$1:$E$3000,COLUMN(B1),FALSE))
将公式向右和向下复制到相应范围(即向右复制到与“客户资料详表”相同列数,向下复制到与“客户抽样检查表”相同的行数)。

注意:公式中“$A$1:$E$3000”为“客户资料详表”中所有数据的范围,可根据你的实际情况改变。

当我们在使用Excel的时候,经常会遇到一些重复性、需要处理大量数据的繁琐的事情。我们此时便可以考虑使用宏的方法去实现。至于宏是怎么一回事以及如何使用,请参考有关文档。当然宏也有它的弊端,有些工作并非使用简单的宏就可以完成,这时就需要excel编程,也就是常说的VBA(Visual Basic For Allication),可以参考Excel的帮助文档或其他文档来学习一下。
在此,我针对你的问题进行了Excel编程,希望能够解决你的问题。
注意:在修改前先备份你的文档,以免发生错误丢失数据。
假设:你的客户资料详表存在Sheet1,客户抽样检查表数在Sheet2。我们把符合条件的数据存放在Sheet3. Sheet2中客户名在第一列,如过在其他列,请把下面的代码中ColCustomer = 1里面的1改成相应的列号
步骤:
1。打开文件,ALT+F11切换到另外一个可编程的界面
2。菜单Insert-->Module
3. 将下面的代码拷贝到右边的空页里面
Sub Macro1()
Dim RowSrc As Integer
Dim RowTar As Integer
Dim ColCustomer As Integer
Dim CustomerName
Dim FindIndex
Set SheetSrc = Worksheets("Sheet2")
Set SheetTar = Worksheets("Sheet1")
RowSrc = 1
RowTar = 1

'假设在Sheet2中客户名在第一列,如何在其他列,请把下面的1改成相应的列号
ColCustomer = 1
With SheetSrc
Do While SheetSrc.Cells(RowSrc, ColCustomer) <> ""
CustomerName = SheetSrc.Cells(RowSrc, ColCustomer)
' SheetSrc.Select
' Cells(RowSrc & ColCustomer).Select
' Selection.Copy
SheetTar.Select
ActiveWindow.SmallScroll Down:=-6
Set findcustom = Cells.Find(What:=CustomerName, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)

If findcustom <> "" Then
FindIndex = findcustom.Row
Rows(FindIndex & ":" & FindIndex).Select
Application.CutCopyMode = False
Selection.Copy
Worksheets("Sheet3").Select
Rows(RowTar & ":" & RowTar).Select
ActiveSheet.Paste
RowTar = RowTar + 1
End If
RowSrc = RowSrc + 1
Loop
End With
End Sub

3。输入以上代码后,按F5执行。有时会跳出一个标题为macro
窗口,点击Run按钮
4。按ALT+F11切换回去
5。你将发现这时候,Sheet3里面的数据
因为你说的不大详细,不知会有什么问题,但是不妨一试,只要事先备份一下不会有问题。

一楼二楼的兄弟答得都不错,但实践性都不强,一个要记函数,一个更是要去学习编程,其实这个问题我们完全可以使用“高级筛选”来实现。同时常握了高级筛选你还可以解决很多类似的问题。来试试吧!!
在客户资料详表中执行数据——筛选——高级筛选。列表数据是表“客户资料详表”中的数据(一般程序会自动选上),条件区域选择“客户资料详表”表中的客户名称列中的数据,注意不是整列,是从标题到结束的数据。同时,你要确保,“客户资料详表”中也这个表中的相同的列数据,注意,标题名称一定要相同。确定后,“客户资料详表”中就只显示和另一个表具有相同客户名称的数,将其自制粘贴至新表即可。
另:如果有什么问题你可以查查程序的帮助。相信你会从中获益非浅的。

 复制数据,选中另一个表对应范围,选择性粘贴数值即可


“选择性粘贴”的黏贴项。如下图所示,


此问题 可选“仅粘贴数值”,如下面的示例,在粘贴的时候,只会保留原单元格的数值。