2014-02-12 44 views
3

我一直有與使用外部.csv文件作爲其源,特別是在CSV文件日期被視爲文本數據透視表問題中的工作表。因此,我決定將csv文件導入到另一個工作表中,然後通過重新格式化相關列來強制識別日期。Excel 2010中 - 從外部透視表的更改數據源到工作簿

的問題我現在是改變現有的數據透視表在新的工作表,而不是外部源使用的數據。如果我點擊「更改數據源」按鈕,「選擇表格或範圍」選項將變灰。如果我繼續使用外部數據源並單擊「選擇連接」按鈕並選擇新工作表,則會彈出一個對話框,提示「所選連接的類型不能用於創建數據透視表」。

我也試圖轉換CSV文件,XLSX,但也有類似的問題,試圖讓現有的數據透視表,而不是使用它的CSV作爲其來源。

回答

3

是的,這是一個令人討厭的數據透視表約束。

步驟來重新創建,並從.CSV更改數據源到.xls文件:

  1. 創建了標題名稱,生日,登錄.csv文件。關閉文件。
  2. 將.csv導入到新工作簿中的新數據透視表PivotTable1中。
  3. 保存的一部開拓創新的.csv到一個新的工作簿C:\路徑\到\ datasource.xls,命名工作表的數據,並確保數據範圍的左上角的單元格在單元格A1。

然後添加以下VBA宏並執行它:

Sub getExcelData() 
    With ActiveSheet.PivotTables("PivotTable1").PivotCache 
     .Connection = Array(_ 
      Array("ODBC;DSN=Excel Files;"), _ 
      Array("DBQ=c:\path\to\datasource.xls;"), _ 
      Array("DefaultDir=c:\path\to;DriverId=790;MaxBufferSize=2048;PageTimeout=5;") _ 
    ) 
     .CommandText = _ 
      "SELECT `Data$`.Birthdate, `Data$`.Name, `Data$`.Sign" & vbCrLf & _ 
      "FROM `c:\path\to\datasource.xls`.`Data$` `Data$`" 
    End With 
End Sub 

此驅動程序的.CommandText語法是可怕的挑剔,而不是在所有的智能。

因人而異這個代碼在2010年或以後和/或不同的驅動程序。即使在更高版本的Excel數據驅動程序中,日期和數字數據也是處理不當的。在導入之前,我通常要確保數字或日期字段中的每個單元格都有一個有效值,或者至少是第一行數據中的每個單元格。

1

這已經有一段時間,因爲你問過,但我有這個同樣的問題,只是發現了一個解決方案。 基本上,您可以使用VBA將透視表更改爲新的透視緩存。如果新緩存使用相同的字段,那麼您的佈局將被保留。

  1. 根據新的數據源(它可以只是空的)創建一個新的數據透視表。
  2. 單擊新的數據透視表。
  3. 在即時窗口中輸入「?selection.pivottable.cacheindex」,然後按回車。
  4. 請注意數據透視表的索引號。
  5. 在Excel中單擊您要更改的舊數據透視表。
  6. 在即時窗口中鍵入「selection.pivottable.cacheindex = x」,其中x是您在步驟4中記錄的索引編號。
  7. 對每個要使用新源的數據透視表重複步驟6。
  8. 刪除您在步驟1中創建的表格。

可能會在一個步驟中將所有表從一個緩存更改爲另一個緩存,但這可能不是您需要經常執行的操作。

0

這對於那些不知道哪裏是即時窗口的人有幫助,你需要去開發人員選項卡並進入Visual Basic Macro窗口並按下Ctrl + G,它會打開底部的直接窗口。原文由mendosi回答自從你問了一段時間後,我遇到了同樣的問題,只是發現了一個解決方案。基本上,您可以使用VBA將透視表更改爲新的透視緩存。如果新緩存使用相同的字段,那麼您的佈局將被保留。

根據新的數據源創建一個新的數據透視表(它可以只是空的)。 點擊新的數據透視表。 在即時窗口中鍵入「?selection.pivottable.cacheindex」,然後按回車。 請注意數據透視緩存的索引號。 在Excel中單擊您要更改的舊數據透視表。 在即時窗口中輸入「selection.pivottable.cacheindex = x」,其中x是您在步驟4中記錄的索引編號。 對要使用新源的每個數據透視表重複步驟6。 刪除您在步驟1中創建的表。 可能需要一步將所有表從一個緩存更改爲另一個緩存,但這可能不是您經常需要執行的操作。

-1

您是否嘗試打開樞軸嚮導並返回步驟1(您想分析的數據在哪裏)? 在Excel 2007中,打開向導的快捷方式是alt + d + p(或者您可以在快速訪問工具欄上放一個按鈕)。 希望這有助於。

相關問題