另一个工作表的动态命名范围
Dynamic Named range for another worksheet
我有这个动态命名范围:
= OFFSET('Sheet1'!$H, 0, 0, COUNTA('Sheet1'!$H:$H0)-COUNTIF('Sheet1'!$H,0))
它只适用于 Sheet1。
如何修改此公式以使其适用于所有工作表? (大约有 20 张不同的表格,分别命名为“2010”、“2011”等)。
编辑:
- 所有工作表的结构都相同
- 此动态命名范围将用于更新图表
- 有没有办法使用 INDIRECT?
如果您所有的 sheet 的结构都与 sheet1 类似,您只需将公式中的 "Sheet1" 值更改为您的 sheet 名称即可。例如,对于 2010 年的工作sheet,它将是:
= OFFSET('2010'!$H, 0, 0, COUNTA('2010'!$H:$H0)-COUNTIF('2010'!$H,0))
更好的是,您实际上可以只删除公式中的 sheet 名称并将其复制到所有 sheet 中(不要复制单元格本身;复制公式文本并粘贴单击单元格后它在编辑栏上):
= OFFSET($H, 0, 0, COUNTA($H:$H0)-COUNTIF(!$H,0))
您需要具有工作表范围而不是工作簿范围的同名命名范围。
我已将您的命名范围定义修改为以下内容。
=Sheet1!$H:INDEX(Sheet1!$H:$H, MATCH(1E+99, Sheet1!$H:$H))
此 VBA 将为循环中的所有工作表创建工作表范围命名范围。
Sub createNames()
Dim wsn As Long, f As String
For wsn = 2010 To 2019
On Error GoTo next_wsn
With Worksheets(CStr(wsn))
On Error Resume Next
.Names("Hnumbers").Delete
On Error GoTo 0
f = Replace("=Sheet!R1C8:INDEX(Sheet!C8, MATCH(1E+99, Sheet!C8))", "Sheet", Format(wsn, "'0'"))
.Names.Add Name:="Hnumbers", RefersToR1C1:=f
End With
next_wsn:
Next wsn
End Sub
我有这个动态命名范围:
= OFFSET('Sheet1'!$H, 0, 0, COUNTA('Sheet1'!$H:$H0)-COUNTIF('Sheet1'!$H,0))
它只适用于 Sheet1。
如何修改此公式以使其适用于所有工作表? (大约有 20 张不同的表格,分别命名为“2010”、“2011”等)。
编辑:
- 所有工作表的结构都相同
- 此动态命名范围将用于更新图表
- 有没有办法使用 INDIRECT?
如果您所有的 sheet 的结构都与 sheet1 类似,您只需将公式中的 "Sheet1" 值更改为您的 sheet 名称即可。例如,对于 2010 年的工作sheet,它将是:
= OFFSET('2010'!$H, 0, 0, COUNTA('2010'!$H:$H0)-COUNTIF('2010'!$H,0))
更好的是,您实际上可以只删除公式中的 sheet 名称并将其复制到所有 sheet 中(不要复制单元格本身;复制公式文本并粘贴单击单元格后它在编辑栏上):
= OFFSET($H, 0, 0, COUNTA($H:$H0)-COUNTIF(!$H,0))
您需要具有工作表范围而不是工作簿范围的同名命名范围。
我已将您的命名范围定义修改为以下内容。
=Sheet1!$H:INDEX(Sheet1!$H:$H, MATCH(1E+99, Sheet1!$H:$H))
此 VBA 将为循环中的所有工作表创建工作表范围命名范围。
Sub createNames()
Dim wsn As Long, f As String
For wsn = 2010 To 2019
On Error GoTo next_wsn
With Worksheets(CStr(wsn))
On Error Resume Next
.Names("Hnumbers").Delete
On Error GoTo 0
f = Replace("=Sheet!R1C8:INDEX(Sheet!C8, MATCH(1E+99, Sheet!C8))", "Sheet", Format(wsn, "'0'"))
.Names.Add Name:="Hnumbers", RefersToR1C1:=f
End With
next_wsn:
Next wsn
End Sub