在一工作薄中分别有SHEET1与SHEET2,其中SHEET1是总表,SHEET2是分表,从SHEET2是分表中将数值引用到总表
总表A1列为名称B1、C1、D1.....是日期(整月的日期都有),分表A1列也是名称,但B1、C1、D1.....是日期中有可能有某天的日期是没有的,想从分表中使用VB...
总表A1列为名称B1、C1、D1.....是日期(整月的日期都有),分表A1列也是名称,但B1、C1、D1.....是日期中有可能有某天的日期是没有的,想从分表中使用VBA方法将B2、C2、D2.......把数值引用到总表中,应该怎么表示?谢谢!
展开
1个回答
展开全部
亲,如果只有一张分表,公式就可以解决。
如下图,Sheet1的B2单元格粘贴这个公式。
=IFERROR(INDEX(Sheet2!$A:$D,MATCH(Sheet1!$A2,Sheet2!$A:$A,),MATCH(Sheet1!B$1,Sheet2!$1:$1,)),"")
右拉到F2,然后选中B2:F2,整体下拉公式。
如果你是Excel2003版,公式改为:
=IF(ISERROR(INDEX(Sheet2!$A:$D,MATCH(Sheet1!$A2,Sheet2!$A:$A,),MATCH(Sheet1!B$1,Sheet2!$1:$1,))),"",INDEX(Sheet2!$A:$D,MATCH(Sheet1!$A2,Sheet2!$A:$A,),MATCH(Sheet1!B$1,Sheet2!$1:$1,)))
更多追问追答
追问
因表格大太,如果使用函数的话,所占的内存更大,到时电脑很反应会很慢,所以我想使用VBA代码来表达,应该要怎么表达呢?
追答
可以,VBA的代码如下。
打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。
Sub tc()
Dim i, j, r, c As Long
Dim fr, fc As Range
With Sheets("Sheet2")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
For j = 2 To .Cells(1, Columns.Count).End(xlToLeft).Column
Set fr = UsedRange.Find(.Cells(i, "A").Value)
Set fc = UsedRange.Find(.Cells(1, j).Value)
If Not fr Is Nothing And Not fc Is Nothing Then
Cells(fr.Row, fc.Column).Value = .Cells(i, j).Value
End If
Next
Next
End With
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询