2015-11-24 42 views
1

因此,我正在使用用戶數據的結構化引用。最終我們會有一個合適的導入程序,但是我希望能夠稍後推遲,並且現在使用原始數據的複製過去。結構化引用:通過複製保留名稱

所以我有一個表,說tData,它包含一個原始數據輸出的副本。該輸出已經附帶了頭文件,這些頭文件實際用於整個工作簿中數據的結構化引用。

我的問題是原始輸出不是100%穩定 - 例如,有些列可能會出現&去。這些不用於計算,但它確實影響表結構(列的位置)。我無法控制原始輸出。

我希望能指示他們現在直接複製過去。由於我正在使用標頭&沒有定位,我認爲這些公式仍然有效。

總結在下面的圖片中:= tTest [Column2]是爲右邊框設置的公式。它應該參考column2的內容(所以2)。如果我複製 - 通過不同的標題,使用「Column0」將所有內容都轉移到右側,您可以看到一個位置引用實際上由Excel用來引用您的數據。現在回到「1」和Excel甚至改變了公式「= t檢驗[列1]

enter image description here

enter image description here

看來我錯了 - 例如,如果您按名稱引用一些你不。希望它實際上是由位置引用

我已經嘗試過t檢驗[標題]:[標題]和它不工作,要麼

+0

你可以使用INDIRECT我猜,= INDIRECT(「tTest [@ Column2]」) –

+0

有趣的提案 - 我實際上是試圖使參考文本,但沒有想到間接。 我會先檢查一下,以確保我不會失去靈活性 - 因爲在等待正確的導入程序時這更像是一種黑客行爲。我會回頭看看我做了什麼。 –

回答

0

那麼,到底,最好寫一個正確的導入過程,我認爲。我不會發布在這裏,因爲它有點牽扯,並有各種檢查執行。但總體步驟是:

  • 文件選擇數據選擇輸入
  • 複製到一切的ThisWorkbook,靠近輸入文件
  • 比賽從輸入數據的列標題與mytable.HeaderRowRange
  • 複製原數據到相應的列如果匹配,如果找到

所以基本上寫一個腳本來做一個列標題的匹配,這是我認爲Excel會做的。而且還認爲它應該做的。不過考慮到這一點,編寫代碼可能比實際上動態適應已命名的引用而不是位置更簡單。...

正如Bob Phillips所提到的,您可以使用INDIRECT。但是,確實需要向所有引用添加額外的INDIRECT(reference_to_table_here)。 Excel工作表公式足夠笨重我認爲不必讓它們變得更笨重。

即使您使用列名編寫公式,在後臺Excel實際上也會使用表中列的位置進行計算。無論何時更改工作簿的佈局,它都會爲您更新位置。