このデータセットをExcelにインポートする方法(コロンで区切られた各行の列見出し)


1

次のデータセットをExcelにインポートしようとしています。私はテキストインポートウィザードがうまくいっていません。 Excelに列名をid、name、streetなどにして各レコードを新しい行に挿入してもらいたいのです。

,
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フィールド。
Anonymous

テキストファイルから開かないでコピーして> PasteSpecial - データを転置するための転置
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)の行が強調表示されます。何か案は?
Anonymous

さて、テキストファイルとその上のあなたの例の行で私のために働く。入力ファイルをどこかにアップロードしてもらえますか。
nixda

私のせいでしたが、誤ってフルファイルからヘッダーテキストを削除するのを忘れてしまいました。完璧に動作し、とても感謝して、ありがとう。 :)
Anonymous

0

これが1回限りの操作であると仮定します。

キーボードマクロを持つテキストエディタを使用してください。

  1. 単一のコンマから単一のコンマへ、「1ブロック」下に移動するマクロを作成します。

  2. このマクロを使用して文書を調べて、すべてのブロックにすべてのフィールドが含まれていることを確認してください。そうでない場合は、足りないフィールド(行)を挿入します

  3. データに二重引用符が含まれている場合は、 "to" "に置き換えます。

  4. ブロック内のすべての行を二重引用符で囲み、最後の改行文字を削除してそれらを連結する新しいマクロを作成します。

  5. ExcelでCSVインポートをする

備考:

  • ファイル全体の実際のデータによっては、すべての手順が必要なわけではありません。

  • 実際のデータとエディタの機能に応じて、これにはさまざまなバリエーションがあります(すべての行を二重引用符で簡単に囲むには、\ nを "\ n"に置き換えるなど)。

  • 実際のCSVインポートをExcelで機能させるには、バリエーションを試してみる必要があるかもしれません(一重引用符を囲んでみてください)。

  • 試用時にすべての手順をやり直す必要がないように、さまざまな編集手順の中間ファイルを保存してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.