【1】(jysj0542答案)使用OFFSET函数有一个隐患:当单号不按从1开始的顺序排列、或当中缺号时会出错。以致单号必须是从1开始的整数,即使是很早已经处理过的、也不能删除,给使用带来不便。【2】最常见的是使用VLOOKUP函数查找。但VLOOKUP函数有些小的不足;1: 限定在区域的第一列中查找,而单号是在第二列,第一列的日期要另外处理。当然,实际上,只要把日期与单号位置对调一下就很方便。2: 数据源是空的单元格,引用后会变为0,有点不顺眼;3: 更多附加要求要另外处理。公式看起来很多,其实很简单,在A7输入公式后,向其他单元格拉,复制即可。(日期与单号位置已更换)=IF(ISERROR(VLOOKUP($P7,进货明细!$A$7:$O$21000,COLUMN(),FALSE)),"", VLOOKUP($P7,进货明细!$A$7:$O$10000,COLUMN(),FALSE))【3】使用宏最灵活,可以方便满足更多附加要求,如处理后变颜色…等,在工作表模块(双击出现)中写入宏,检测是否在“输入单号”列中输入单号,如果输入单号,则按单号查找,查找到则填写,并将源变红提示。Private Sub Worksheet_Change(ByVal Target As Range) H = Target.Row If Target.Column = 16 And Target.Row > 6 Then For i = 7 To 100000 If Sheet1.Cells(i, 1) = "" Then MsgBox ("没找到!") Exit Sub End If If Sheet1.Cells(i, 1) = Target Then For j = 1 To 15 Sheet2.Cells(H, j) = Sheet1.Cells(i, j) Sheet1.Cells(i, j).Font.ColorIndex = 3 ‘ 附加处理后变颜色 Next j Exit Sub End If Next i End IfEnd Sub见附件:增加一个工作表“记录”是使用宏的。附件:副本---.rar