Чи можете витягувати дані Excel із зовнішнього (та динамічного) .csv-файлу?


14

У мене є сценарій, який виводить ряд показників продуктивності для комп'ютера в .csv. Excel робить основну статистику для перевірки стандартного відхилення тощо.

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

Чи є спосіб мати посилання на клітинку / таблицю зовнішнім .csv без повторного імпорту?


Коли файл оновлюється, додається чи перезаписаний?
Бенджамін Андерсон

Повністю переписати. Але я здогадуюсь, я міг би змінити його так, щоб він працював будь-яким способом.
редактор

Відповіді:


5

Найпростіший спосіб зробити це - імпортувати дані в Access або SQL Express, а потім використовувати функції та функції Data Connection в Excel. Після первинного налаштування все, що вам потрібно буде зробити, це натиснути кнопку «Оновити все», і воно витягне дані та перерахує значення.

Ви можете безпосередньо імпортувати CSV за допомогою функції підключення для передачі даних, але вам потрібно захопити дані та додати їх до робочого листа. Це буде працювати, доки ви імпортуєте його на вторинний робочий лист і не залишите формули та розрахунки на іншому аркуші. Коли ви натискаєте кнопку Оновити за допомогою цього методу, він запитає ім’я файлу, а потім повторно імпортує його, використовуючи ті самі налаштування, що і раніше. Цей метод також зазвичай повільніший або непридатний для використання з великими наборами даних.


2
Використовуючи функцію підключення до даних, ви можете відключити запит на ім’я файлу (у кінці майстра є прапорець). У цей момент ви також можете встановити його для автоматичного оновлення кожні X хвилин. Добре працює для невеликих наборів даних.
Мартін МакНулті

4

Windows

Ви також можете використовувати Power Query, який є більш гнучким способом досягти того ж, що і у відповіді @ andy-lynch .

  1. Отримайте його тут
  2. Встановіть його
  3. Перейдіть на нову вкладку стрічки "Power Query".
  4. Або натисніть "З файлу" або "З Інтернету" і дотримуйтесь інструкцій на екрані.

Дивіться нижче анімований gif для попереднього перегляду:

введіть тут опис зображення

MacOS

Запит на живлення не доступний для MacOS; також не відкрито діалогове вікно файлу Excel "From Text" на MacOS, що приймає URL (принаймні, у версії 15.33).

Для створення такого з'єднання спочатку слід створити файл веб-запитів (.iqy), як пояснено в цьому посібнику , а потім імпортувати його за допомогою команди меню "Дані -> Отримати зовнішні дані -> Запустити збережений запит".


Я згоден - в Excel 2016+ я розумію, що це тепер за замовчуванням (як Get and Transform )
Енді Лінч

2

Питання "Як я посилаюсь на дані у файлі .csv?

Мій спосіб полягав би в тому, щоб вирізати .csv файл і використовувати макрос, що містить VBA і ADO, який отримує дані і передає їх безпосередньо на робочий аркуш в Excel. Будь-яка база даних, сумісна з ODBC, може стати вашим джерелом.

У Excel 2010 є дані >> Отримати зовнішні дані - з різних джерел даних. Однак я вважаю за краще писати власний код, оскільки маю абсолютний контроль і можу форматувати результати в макросі. Оновлення відбувається одним натисканням кнопки, і ви можете зробити все, що завгодно.

Я можу повідомити вам деякі особливості, якщо ви скажете мені, з якої бази даних беруться показники.

PS Перегляньте список драйверів у розділі Дані >> Отримати зовнішні дані >> Існуючі підключення >> Шукати більше >> Нове джерело >> Інше розширене >> Далі, що веде вас до списку Властивості посилання даних. Тоді ви повинні знати, яку джерельну базу даних та який драйвер використовувати. Ви можете надіслати мені електронну пошту на cliffbeacham на hotmail з більш детальною інформацією


2

Більш простий спосіб (завдяки цій публікації ) - це просто імпортувати дані так, як це було б для текстового файлу, який ви вже завантажили (тобто Data > Import Text File), але замість того, щоб ввести ім'я файлу, вставте натомість URL-адресу файлу CSV.


Це корисно. Якщо віддалений файл змінюється, я думаю, що це не динамічно оновлюється.
редактор

Це правда, хоча звичайні варіанти оновлення на відкриті / кожні <x> хвилини все ще застосовуються.
Енді Лінч


0

З макросом або сценарієм VBS виглядатиме так (Excel2010 та новіші версії):

Sub Macro1()
'
' Macro1 Macro
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;\\Path\To\CSV\Folder\CSV_Data.csv" _
        , Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "Book1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 437
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

Цей макрос був фактично записаний рекордером макросів Excel 2013. Ви можете створити кнопку, яка запускає цей макрос.Макрореєстратор на панелі інструментів від MS Excel 2013

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.