你好,麻烦您问一下,EXCEL里如何将表格名和表格里的数据一起提取出来?谢谢
发布网友
发布时间:2022-05-05 13:26
我来回答
共2个回答
热心网友
时间:2023-10-08 17:00
被邀请回答,还关注了我一下,虽然已经有回签被推荐,我还是回复一下吧,猛一看,以为是要工作表名,但仔细想想,估计你想通过VB代码获得数据,我分两个分别回你吧。
一、获得名称方法,办法比较多,我列了四个
1、定义名称:Name
=GET.DOCUMENT(88)
2、定义名称:Path
=GET.DOCUMENT(2)
3、在A1中输入=CELL("filename")得到路径级文件名
在需要得到文件名的单元格输入
=MID(A1,FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))
4、自定义函数
Public Function name()
Dim filename As String
filename = ActiveWorkbook.name
name = filename
End Function
二、实际是想获得数据
Sub CombineWorkbooksrange()
Dim FilesToOpen, ft
Dim x As Integer
Application.ScreenUpdating = False
On Error GoTo err
FilesToOpen = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt *.xlsx *.xlsb),*.xls;*.xla;*.xlt;*.xlsx;*.xlsb", MultiSelect:=True, Title:="要取数的文件")
If TypeName(FilesToOpen) = "boolean" Then
MsgBox "没有选定文件"
GoTo err
End If
x = 1
While x - 1 < UBound(FilesToOpen)
Set wk = Workbooks.Open(Filename:=FilesToOpen(x))
For i = 1 To wk.Sheets.Count
If wk.Sheets(i).Name = "1" Then
Set xlra = wk.Sheets("1").[C5]
Else
Set xlra = wk.Sheets(i).[C5]
End If '注意,引号内的1就是你要的相同工作表名,如果工作表名无要求,则继续,取单元格数值,现在是取C5
Sheet1.Range("a65500").End(xlUp).Offset(1, 0) = xlra & "工作表名:" & wk.Sheets(i).Name
Next
x = x + 1
wk.Close
Wend
MsgBox "获取数据完成!"
err:
End Sub来自:求助得到的回答
热心网友
时间:2023-10-08 17:00
使用函数的话需要提前安装一个函数扩展包。如工作簿中有7个表,需要提取所有工作表名称。我们在第一张工作表的A1单元格输入公式
=IFERROR(GetSheetName(ROW(A1)),'')
然后向下拖动复制,知道出现空白即停止。
这里IFERROR函数的作用是屏蔽错误值,让结果更整洁。