详细说明:
我要写的公式如下:
=SUMPRODUCT('6月核减'!$F$2:$F$1000*ISNUMBER(FIND(A3,'6月核减'!$B$2:$B$1000))*('6月核减'!$E$2:$E$1000=C3))
也就是说,我要动态获得“6月核减”这个工作簿名,因为这个是按月份来的,还有7月核减、8月核减....等
另附10种函数方法获取当前工作薄名!
定义名称法9种
1.=MID(GET.CELL(32),2,FIND("]",GET.CELL(32))-2)
2.=GET.WORKBOOK(16)
3.=GET.CELL(66)
4.=GET.DOCUMENT(88)
5.=MID(GET.DOCUMENT(1),2,FIND("]",GET.DOCUMENT(1))-2)
6.=MID(GET.DOCUMENT(76),2,FIND("]",GET.DOCUMENT(76))-2)
7.=MID(GET.WINDOW(1),2,FIND("]",GET.WINDOW(1))-2)
8.=MID(GET.WINDOW(30),2,FIND("]",GET.WINDOW(30))-2)
9.=MID(GET.CELL(62),2,FIND("]",GET.CELL(62))-2)
一种普通函数法
1.=MID(CELL("filename"),FIND("[",CELL("filename"))+1,FIND("]",CELL("filename"))-FIND("[",CELL("filename"))-1)
10 个解决方案
#1
for i=1 to 12
=SUMPRODUCT('" & i & "月核减'!$F$2:$F$1000*ISNUMBER(FIND(A3,'" & i & "月核减'!$B$2:$B$1000))*('" & i & "月核减'!$E$2:$E$1000=C3))
#2
li163 你好,非常感谢你的回复
你的意思是只需将表格名称“6月核减”中的“6”换成【" & i & "】吗?
前面的【for i=1 to 12】for循环语句是啥意思咧?这个公式我是要写到excel表格中的喔。不是vba形式
#3
不是vba
#4
额,我按你的方法将“6”换成【" & D6 & "】,行不通喔.直接出现#REF!值了。没有加 【for i=1 to 12】for循环语句.
#5
将“6”换成【" & D6 & "】 就是字符串拼接操作吧?呵呵
#6
不要用循环了,你根据什么来变化?比如我根据数据(单元格里的月份),也可以根据单元格的信息来变化
#7
'6月核减'
***********
这个到底是工作簿还是工作表?
***********
这个到底是工作簿还是工作表?
#8
是工作表sheet!!!!
#9
Option Explicit
'窗体Form1上放一个列表框List1,一个命令按钮Command1,一个通用对话框CommonDialog1
'引用对象库Microsoft Excel 11.0 Object Library
Dim xlExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Private Sub Command1_Click()
On Error GoTo Errhandler
CommonDialog1.Filter = "Excel(*.xls) |*.xls|AllFile(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Set xlExcel = New Excel.Application ' CreateObject("Excel.Application")
xlExcel.Workbooks.Open CommonDialog1.FileName
Set xlBook = xlExcel.Workbooks(CommonDialog1.FileTitle)
List1.Clear
For Each xlSheet In xlBook.Worksheets
List1.AddItem xlSheet.Name
Next
Debug.Print xlBook.Worksheets.Count
Errhandler:
xlBook.Close
xlExcel.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlExcel = Nothing
End Sub
Private Sub Form_Load()
Command1.Caption = "枚举Excel表中所有sheet表"
End Sub
#10
有直接用函数获得的不?
#1
for i=1 to 12
=SUMPRODUCT('" & i & "月核减'!$F$2:$F$1000*ISNUMBER(FIND(A3,'" & i & "月核减'!$B$2:$B$1000))*('" & i & "月核减'!$E$2:$E$1000=C3))
#2
li163 你好,非常感谢你的回复
你的意思是只需将表格名称“6月核减”中的“6”换成【" & i & "】吗?
前面的【for i=1 to 12】for循环语句是啥意思咧?这个公式我是要写到excel表格中的喔。不是vba形式
#3
不是vba
#4
额,我按你的方法将“6”换成【" & D6 & "】,行不通喔.直接出现#REF!值了。没有加 【for i=1 to 12】for循环语句.
#5
将“6”换成【" & D6 & "】 就是字符串拼接操作吧?呵呵
#6
不要用循环了,你根据什么来变化?比如我根据数据(单元格里的月份),也可以根据单元格的信息来变化
#7
'6月核减'
***********
这个到底是工作簿还是工作表?
***********
这个到底是工作簿还是工作表?
#8
是工作表sheet!!!!
#9
Option Explicit
'窗体Form1上放一个列表框List1,一个命令按钮Command1,一个通用对话框CommonDialog1
'引用对象库Microsoft Excel 11.0 Object Library
Dim xlExcel As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Private Sub Command1_Click()
On Error GoTo Errhandler
CommonDialog1.Filter = "Excel(*.xls) |*.xls|AllFile(*.*)|*.*"
CommonDialog1.FilterIndex = 1
CommonDialog1.ShowOpen
Set xlExcel = New Excel.Application ' CreateObject("Excel.Application")
xlExcel.Workbooks.Open CommonDialog1.FileName
Set xlBook = xlExcel.Workbooks(CommonDialog1.FileTitle)
List1.Clear
For Each xlSheet In xlBook.Worksheets
List1.AddItem xlSheet.Name
Next
Debug.Print xlBook.Worksheets.Count
Errhandler:
xlBook.Close
xlExcel.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlExcel = Nothing
End Sub
Private Sub Form_Load()
Command1.Caption = "枚举Excel表中所有sheet表"
End Sub
#10
有直接用函数获得的不?