簡體   English   中英

如果列名有換行符,如何引用 Excel ListObject 表列?

[英]How do I reference an Excel ListObject table column if the column name has line breaks?

我的任務是:

  • 必須將來自不同工作簿的幾張紙復制到新工作簿
  • 這些工作表中的每一個都包含一個 Excel 表(一個 ListObject),其名稱類似於帶有后綴 T 的工作表(工作表 Foo,表:FooT)
  • 新工作簿必須包含一個匯總表,其中列出了每個表的名稱,並通過使用合適的公式引用它們來呈現各個表的各種值

這必須針對不同的工作簿經常執行,所以我的想法是在 VBA 中執行此操作。

復制工作表很容易,在新工作表中列出表名很容易,但引用這些值會遇到問題。

總體思路是執行以下操作

ActiveSheet.Range("A1").Value = "FooT"
ActiveSheet.Range("B1").Formula = "=FooT[[#Totals],[Quantity]]"
ActiveSheet.Range("C1").Formula = "=FooT[[#Totals],[Total List Price]]"

並遍歷所有工作表。

設置 A 的值和 B 的公式按預期工作並獲得預期結果。

C 的問題在於,header 列實際上被格式化為

“全部的
列表
價格”

我無法改變這一點,這是一個設計決定。

如果我手動將公式添加到單元格,這也是列名在公式中的顯示方式。

所以這里發生了某種換行符,我已經嘗試在 VBA 中使用

ActiveSheet.Range("C1").Formula = "=FooT[[#Totals],[Total" & vbCrLf & _
                                                   "List" & vbCrLf & _
                                                   "Price]]"

和 vb_Cr 和 vb_Lf 和 vb_Newline 而不是 vbCrLf。 嘗試將 C 的公式設置為這些變體中的任何一個都會產生臭名昭著的錯誤 1004。

從其中一張工作表中獲取列 header 的值並在公式中使用它。 這可能是一個潛在的解決方法,但我真的很想知道我遺漏了什么或者我如何才能弄清楚如何正確構建這個公式字符串。

您的公式確定,但是通常,如果標題是通過鍵盤設置的,則換行符將為vbLf。 我還懷疑標題中的任何地方可能都有前導和/或尾隨空格字符。 選擇您的標題單元,然后從VBE的立即窗口(Ctrl + G)中鍵入Debug.Print ActiveCell.Value,然后檢查每條打印行的結尾。

您是否正在使用Option Explicit? 在您的問題中,您提到您嘗試過vb_Lf,但是該常量不存在,並且如果沒有Option Explicit,它將被解釋為空字符串。

當您在單元格中輸入換行符時,文本實際上是連續到上一行,沒有分隔符,除非您在換行符之前輸入空格。 要命名該列,您必須在上一行的最后一個單詞和下一行的第一個單詞之間沒有空格,如下所示:[TotalListPrice]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM