Як імпортувати цей набір даних у excel? (заголовки стовпців у кожному рядку, розділених двокрапкою)


1

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

,
id: sdfg:435-345,
name: Some Name,
type: ,
street: Address Line 1, Some Place,
postalcode: DN2 5FF,
city: Cityhere,
telephoneNumber: 01234 567890,
mobileNumber: 01234 567890,
faxNumber: /,
url: http://www.website.co.uk,
email: email@address.com,
remark: ,
geocode: 526.2456;-0.8520,
category:    some, more, info

,
id: sdfg:435-345f,
name: Some Name,
type: ,
street: Address Line 1, Some Place,
postalcode: DN2 5FF,
city: Cityhere,
telephoneNumber: 01234 567890,
mobileNumber: 01234 567890,
faxNumber: /,
url: http://www.website.co.uk,
email: email@address.com,
remark: ,
geocode: 526.2456;-0.8520,
category:    some, more, info

Чи є простий спосіб зробити це за допомогою Excel? Я намагаюся придумати спосіб легко перетворити це на звичайний CSV. Наскільки я можу подумати, я повинен був би видалити мітки з кожного рядка, укласти кожен рядок у лапки, а потім розмежувати їх комами. Очевидно, що це ускладнює сценарій, хоча деякі поля (наприклад, адреса) містять дані, розміщені комами. Мені взагалі непогано з регулярними виразами.

Який найкращий спосіб вирішити це?


чи структура завжди однакова? Чи завжди 14 полів в одному порядку?
nixda

Так, завжди 14 полів у тому ж порядку.
Анонім

чому б не відкрити його з текстового файлу, а потім скопіювати Copy> PasteSpecial - Transpose для перенесення даних
Our Man in Bananas

Відповіді:


1

Цей макрос працює з вашим прикладом.
(Я припускаю, що ви знаєте, як боротися з макросами VBA)

Sub ImportDataset()
    strPath = Application.GetOpenFilename()
    Open strPath For Input As #1
    While Not EOF(1)
        Line Input #1, strLine
        If strLine = "," Or strLine = "," Then
            intRow = intRow + 1
            intCol = 0
        End If
        If InStr(strLine, ":") <> 0 Then
            intCol = intCol + 1
            intStart = InStr(strLine, ":")
            strLine = Mid(strLine, intStart + 2)
            strLine = Left(strLine, Len(strLine) - 1)
            ActiveSheet.Cells(intRow, intCol) = strLine
        End If
    Wend
    Close #1
End Sub

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

Дякую nixda, але коли я запускаю, отримую "Помилка часу виконання'5": Недійсний виклик процедури або аргумент. Якщо я натискаю налагодження, він виділяє рядок з strLine = Left (strLine, Len (strLine) -1). Якісь ідеї?
Анонім

Що ж, з текстовим файлом та вашими прикладними рядками вище його працює для мене. Не могли б ви десь завантажити свій вхідний файл?
nixda

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

0

Якщо припустити, що це разова операція:

Використовуйте текстовий редактор, який має макроси клавіатури.

  1. Напишіть макрос, який рухається «одним блоком» вниз, від однієї коми до єдиної

  2. Перегляньте документ із цим макросом, щоб переконатися, що всі ваші блоки містять усі поля; якщо ні, введіть відсутні поля (рядки)

  3. Зробіть глобальну заміну: "на" ", якщо у ваших даних є подвійні лапки

  4. Напишіть новий макрос, який оточує всі рядки в блоці з подвійними лапками, а потім з'єднайте їх, видаливши символ нового рядка в кінці

  5. Робіть імпорт CSV в Excel

Зауваження:

  • Не всі кроки можуть бути необхідними залежно від фактичних даних у вашому файлі

  • Тут можливі варіанти (наприклад, заміна \ n на "\ n" для швидкого оточення всіх рядків подвійними лапки), залежно від ваших фактичних даних та можливостей редактора.

  • Можливо, вам доведеться спробувати варіанти, щоб отримати фактичний імпорт CSV для роботи в Excel (як, можливо, спробуйте оточити окремі цитати)

  • Зберігайте проміжні файли для різних етапів редагування, щоб вам не довелося повторювати всі кроки при спробі

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