2017-10-25 3 views
0

私は、次の使命を帯びています:異なるワークブックから列名に改行がある場合、Excel ListObjectテーブルの列を参照するにはどうすればよいですか?

  • 数枚新しいブック
  • にコピーする必要があり、これらのシートの各々が持つシートのような名前の、Excelのテーブル(ListObject)が含まれてい後置T(シートフー、テーブル:フィート)
  • 新しいブックは、各テーブル名が表示されている要約シートを含むことがあり、各テーブルの各値は、適切な式
でそれらを参照することにより提示されます

Thiさまざまなワークブックで頻繁に行う必要があるため、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と

問題ではなく、「合計価格」で、列ヘッダが実際に

「総
一覧
価格」

としてフォーマットされていることである私は、このことをそれを変更することはできません設計上の決定でした。

セルに手動で数式を追加すると、これも列名が表示される方法です。

だから、ここで起こって改行のいくつかの並べ替えだ、と私は

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

とvb_Crとvb_Lfとvb_Newlineの代わりのvbCrLfとVBAでこれに応えるために試してみました。 Cの式をこれらの変数のいずれかに設定しようとすると、悪名高いError 1004が返されます。

シートの1つから列ヘッダーの値を取得し、数式で使用します。これは潜在的な回避策かもしれませんが、私は本当に何が欠けているか、この数式文字列を正しく構築する方法を知ることができるかどうかを知りたいです。

+0

Excelで100%を話すことはできませんが、SQLの戻り値や改行では列には有効な文字がありません。これは.NETのデータグリッドと関連オブジェクトにも当てはまります。私はそれがExcelにも当てはまると仮定することができます。デザインの決定はあなたをコーナーに描いたようです。インデックスを保存してその値で参照することは可能でしょうか? –

+1

あなたの数式はOKですが、タイトルがキーボードから設定されている場合、改行文字はvbLfになります。 「Total」や「List」の後にスペースが残っていると思われます。 (あなたのタイトルを選択し、イミディエイトウィンドウから 'Debug.Print Selection.Value'と入力し、各行の終わりを確認してください) – Excelosaurus

+0

@Excelosaurusこれを答えに変えることができますか?vbLfは動作し、スペースはありません。次の日にExcelを開いて、変更されていないコードが突然動作するこれらのエラーの1つになるようにしてください。 –

答えて

1

あなたの数式はOKですが、通常は、タイトルがキーボードから設定されている場合、改行文字はvbLfになります。また、タイトルのどこにも先頭や末尾にスペース文字がある可能性があると思われます。タイトルセルを選択し、VBEのイミディエイトウィンドウ(Ctrl + G)でDebug.Print ActiveCell.Valueと入力し、各行の終わりを確認します。

Option Explicitを使用していますか?あなたの質問では、あなたはvb_Lfを試したことに言及していますが、この定数は存在せず、Option Explicitがなければ空の文字列として解釈されます。

+0

はい、Option Explicitが設定されています。 –

関連する問題