如果在EXCEL中提取工作表固定位置的数值

一个EXCEL文件,有大量的工作表,想提取其中的一些数值单独列表,如何实现

假设汇总表和各房号表位于同一个文件,则:

房号这列用手工填,然后,B:F分别输入

B2输入

=INDIRECT(A2&"!I3")&""

C2输入

=INDIRECT(A2&"!E4")

D2输入

=INDIRECT(A2&"!I4")

E2输入

=INDIRECT(A2&!E5")

F2输入

=INDIRECT(A2&"!D7")

然后,选中B2:F2,下拉填充公式即可。

 

如果不想手工输入房号,则在这个文件中再新建一个工作表,按【ALT+F11】,双击左侧树形结构中新建的工作表,将下述代码粘贴到右侧编辑区,执行主菜单中“运行”——“运行子过程/用户窗体”,即可得到你要的结果。

Sub HZ()
    Dim sj(), i%
    ReDim sj(Sheets.Count - 2, 5): i = -1
    For Each sh In Sheets
        If sh.Name <> ActiveSheet.Name And sh.[i3] <> "" Then
            i = i + 1
            sj(i, 0) = sh.Name
            sj(i, 1) = sh.[i3]
            sj(i, 2) = sh.[e4]
            sj(i, 3) = sh.[i4]
            sj(i, 4) = sh.[e5]
            sj(i, 5) = sh.[d7]
       End If
    Next
    If i > -1 Then ActiveSheet.[a2].Resize(i + 1, 6) = sj 
End Sub

追问

这个真简单,只是我想多提取几个数,我在END IF前面加了 sj(i, 6) = sh.[i7],运行的时候错误提示运行时错误“9”,下标越界,怎么修改。

追答

将第三行ReDim sj(Sheets.Count-2,5)的5修改为你要提取的数据个数减1,比如每张表要提取10个数,则,将5改成9。
第15行中的6修改为每张表要提取的数即可。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-12
面积那列是E4 单价是I4 总价是E5 地下室是I7
在下面的 序号的那个表格中 C3 输入公式=[第一个文件的文件名]sheet北5-3-601!E4
D4输入公式=[第一个文件的文件名]sheet北5-3-601!I4
E5输入公式=[第一个文件的文件名]sheet北5-3-601!E5
F5输入公式=[第一个文件的文件名]sheet北5-3-601!I7
之后就是复制公式,复制公式 每个房号在公式里面改变下就可以了
第2个回答  2014-01-12
建议将单独所列的表放在同一个工作簿下,然后可以通过INDIRECT函数引用房号所在列的单元格内容查找对应工作表的内容。
1、新表的房号手动录入;
2、在B2单元格输入=INDIRECT(A2&"!I3")
在C2单元格输入=INDIRECT(A2&"!E4")
在D2单元格输入=INDIRECT(A2&"!I4")
在E2单元格输入=INDIRECT(A2&"!E5")
在F2单元格输入=INDIRECT(A2&"!D7")
3、选择B2:F2单元格,在F2单元格右下角出现+时,双击,向下快速填充公式,完成数据录入。
第3个回答  2014-01-12

假设,总表(就是你抓图下面的表)跟各个分表在同一工作簿里面。

在总表的B2输入

=INDIRECT("'"&A2&"'!I3")

在总表的C2输入

=INDIRECT("'"&A2&"'!E4")

在总表的D2输入

=INDIRECT("'"&A2&"'!I4")

在总表的E2输入

=INDIRECT("'"&A2&"'!E5")

在总表的F2输入

=INDIRECT("'"&A2&"'!I7")

均回车并向下填充(下拉)。


如果总表跟各个分表不在同一工作簿里面,分表的工作簿要同时打开,上面的各个公式的引用前还要加上分表飞工作簿名称,假设分表的工作簿名称为Book1.xls:

在总表的B2输入

=INDIRECT("'[Book1.xls]"&A2&"'!I3")

追问

总表里的A列必须手动输入吗

追答

也可以不要。
在总表里面:Alt+F11——菜单栏——插入——模块——粘贴以下代码:

SubNames()
Fori = 1 To Sheets.Count
Cells(i,1) = Sheets(i).Name
Nexti
EndSub

关闭VBA——菜单栏——工具——宏——宏——选“宏名”——执行。

来自:求助得到的回答本回答被网友采纳
第3个回答  2014-01-12
借机学习一下
相似回答