2014-02-12 2 views
3

У меня возникли проблемы со сводной таблицей, в которой в качестве источника используется внешний CSV-файл, особенно с датами в файле csv, обрабатываемом как текст. Итак, я решил импортировать файл csv в другой рабочий лист, а затем заставлять даты распознавать как таковые, переформатируя соответствующие столбцы.Excel 2010 - Измените источник данных сводной таблицы с внешнего на рабочий лист в рабочей книге

Проблема, с которой я сталкиваюсь, заключается в изменении существующей сводной таблицы для использования данных в новом листе вместо внешнего источника. Если я нажму кнопку «Изменить источник данных», параметр «Выбрать таблицу или диапазон» будет выделен серым цветом. Если я продолжу внешний источник данных и нажмите кнопку «Выбрать соединение» и выберите новый рабочий лист, я получу всплывающее окно, в котором говорится: «Тип выбранного соединения не может использоваться для создания сводной таблицы».

Я также попытался преобразовать файл csv в xlsx, но имел аналогичную проблему, пытаясь заставить существующую сводную таблицу использовать ее вместо источника csv.

ответ

3

Да, это раздражающее ограничение для сводных таблиц.

шаги, чтобы воссоздать и изменить источник данных из .csv в .xls файл:

  1. Создано .csv файл с заголовками Имя, дата рождения, знак. Закрыл файл.
  2. Импортировал CSV в новую сводную таблицу PivotTable1 в новой книге.
  3. Сохранено orignal .csv в новую книгу c: \ path \ to \ 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 для этого драйвера ужасно требователен и не совсем умный.

YMMV с этим кодом в 2010 году или позже и/или с разными драйверами. Дата и числовые данные, как известно, плохо обрабатываются даже в более поздних версиях драйверов данных Excel. Обычно я должен убедиться, что каждая ячейка в числовом или поле даты имеет правильное значение или, по крайней мере, каждую ячейку в первой строке данных перед импортом.

1

Прошло некоторое время с тех пор, как вы спросили, но у меня была такая же проблема, и я только что нашел решение. В принципе, вы можете использовать VBA для изменения сводных таблиц в новый сводный кеш. Если новый кеш использует те же поля, ваш макет будет сохранен.

  1. Создайте новую сводную таблицу на основе нового источника данных (она может быть пустой).
  2. Нажмите на новый стержень.
  3. В ближайшем окне введите «? Selection.pivottable.cacheindex» и нажмите enter.
  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» и нажмите enter. Обратите внимание на номер индекса сводного кеша. В Excel нажмите на старый стержень, который вы хотите изменить. В ближайшем окне введите «selection.pivottable.cacheindex = x», где x - номер индекса, который вы отметили на шаге 4. Повторите шаг 6 для каждой сводной таблицы, которую вы хотите использовать для нового источника. Удалите таблицу, созданную на шаге 1. . Можно изменить все таблицы из одного кеша на другой за один шаг, но это, вероятно, не то, что вам нужно делать часто.

-1

Вы пробовали открыть мастер поворота и вернуться к шагу 1 (где находятся данные, которые вы хотите проанализировать)? В excel 2007 ярлык для открытия мастера - alt + d + p (или вы можете навести на него кнопку на панели быстрого доступа). Надеюсь, это поможет.

Смежные вопросы