将命名范围引用更改为其他两个命名范围的组合
Change named range reference to be a combination of two other named ranges
我目前正在开发一款结合了 java + vba 的应用程序。
我想做的事情:
在 apache poi 库的帮助下,一些数据以 table 的形式导出到 excel。我正在使用这个 table 来定义几个包含相同信息的子 table,而不是整个 table,例如我的主 table 有列 A 到F 和 300 行信息,我的子 table 有 A 到 C 列,有 150 行信息。我所做的是通过 apache poi 声明 2 个不同的命名范围,一个用于 table 的 header,另一个用于我想要的确切内容。我的目标是通过加入引用将这 2 个命名范围合并为一个,因为我希望它作为一个单独的 table,我将导出到包含这些 table 占位符的 powerpoint 模板。
我有:
我将只展示 vba 代码,因为我对 java 部分没有任何问题。
Public Sub test()
Dim rangeHeaderValue As Variant
Dim rangeContentValue As Variant
rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:=Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) &
";" & Right(rangeContentValue, (Len(rangeContentValue) - 1))
End Sub
我收到的关于命名范围的参考:
="Performance_Data!$A:$Q;Performance_Data!$A:$Q"
我的期望: 相同,但没有引号,因为它出于某种原因不起作用。可能是什么问题或者是否有更好的解决方案?我对 VBA 没有真正的经验,提前抱歉。
尝试使用 Union 进行此操作,但它给了我错误,因为它期望范围和命名范围的范围动态变化,每次导出时 a.k.a,因为数据不同。
添加一个 =-符号:(和 , 而不是 ;)
Public Sub test()
Dim rangeHeaderValue As String
Dim rangeContentValue As String
rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:="=" & Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) & "," & Right(rangeContentValue, (Len(rangeContentValue) - 1))
End Sub
我目前正在开发一款结合了 java + vba 的应用程序。 我想做的事情: 在 apache poi 库的帮助下,一些数据以 table 的形式导出到 excel。我正在使用这个 table 来定义几个包含相同信息的子 table,而不是整个 table,例如我的主 table 有列 A 到F 和 300 行信息,我的子 table 有 A 到 C 列,有 150 行信息。我所做的是通过 apache poi 声明 2 个不同的命名范围,一个用于 table 的 header,另一个用于我想要的确切内容。我的目标是通过加入引用将这 2 个命名范围合并为一个,因为我希望它作为一个单独的 table,我将导出到包含这些 table 占位符的 powerpoint 模板。
我有: 我将只展示 vba 代码,因为我对 java 部分没有任何问题。
Public Sub test()
Dim rangeHeaderValue As Variant
Dim rangeContentValue As Variant
rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:=Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) &
";" & Right(rangeContentValue, (Len(rangeContentValue) - 1))
End Sub
我收到的关于命名范围的参考:
="Performance_Data!$A:$Q;Performance_Data!$A:$Q"
我的期望: 相同,但没有引号,因为它出于某种原因不起作用。可能是什么问题或者是否有更好的解决方案?我对 VBA 没有真正的经验,提前抱歉。 尝试使用 Union 进行此操作,但它给了我错误,因为它期望范围和命名范围的范围动态变化,每次导出时 a.k.a,因为数据不同。
添加一个 =-符号:(和 , 而不是 ;)
Public Sub test()
Dim rangeHeaderValue As String
Dim rangeContentValue As String
rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:="=" & Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) & "," & Right(rangeContentValue, (Len(rangeContentValue) - 1))
End Sub