2013-06-11 11:04:23 +0000 2013-06-11 11:04:23 +0000
99
99
Advertisement

CSVファイルのデフォルトの区切り文字としてカンマをExcelに解釈させるには?

Advertisement

私はいくつかの.csvファイルを持っています。その中にはカンマで区切られたものもあれば、タブで区切られたものもあります(.tsv …と呼ぶべきかもしれません)

csv拡張子はExcelがインストールされているときにExcelに関連付けられています。しかし、これらのファイルをExcelで開くと、すべてが同じ列にダンプされ、カンマはデリミタとして解釈されません。

ファイル->インポート…の代わりに、ファイルを選択し、内容を解釈するための正確な方法を選択することができます(デリミタ、データ型など)。エクセルで処理したいわけではありません。

CSVファイルを開くとすぐにデリミタを自動解釈して、適切なテーブルとして表示させる方法はありませんか?そのようなファイルのクイックビューアとしてExcelを使えるようにするために必要なのですが

何か方法があるのではないかと疑っているのですが、そうでなければExcelがCSVファイルと関連付けることはありません。

Advertisement
Advertisement

回答 (9)

100
100
100
2013-12-10 14:38:58 +0000

ファイルのフォーマットを変更する必要がなく、Excelのみを対象としている場合は、以下のExcelのトリックを使用することができます。

ファイルの先頭に新しい行を追加し、Excelがリストの区切り文字として「,」でファイルを開くようにするために、テキスト"sep=,"(引用符を含む)を追加します。しかし、これはExcel特有のものです。

85
85
85
2013-06-11 11:07:17 +0000

CSVファイルを開くとき、ExcelはList separatorと呼ばれるシステムの地域設定を使用して、どのデフォルトの区切り文字を使用するかを決定します。( ウィキペディア より)


** Windows**では、(http://office.microsoft.com/en-us/excel-help/import-or-export-text-files-HP001130599.aspx) :

CSVテキストファイルの区切り文字を変更する

  1. Windowsのスタートメニューをクリックします。コントロールパネルをクリックします。地域と言語のオプション]ダイアログボックスを開きます。地域オプション]タブをクリックします。カスタマイズ/追加設定(Win10)をクリックします。リストの区切り文字ボックスに新しい区切り文字を入力します。 7.OKを2回クリックします。

注意 : これは十進記号がカンマにも指定されていない場合にのみ動作します(上記のWikipediaの引用に沿って)。もし指定されている場合、Excelは、たとえ指定されていても、リストの区切り文字としてカンマを_使用しません。米国以外の多くの地域では、カンマがデフォルトの十進記号となっています。

Mac OS Xでは、この設定はdecimal separatorの設定から推測されるようです(システム環境設定言語と地域ペインで、詳細に移動してください)。Decimal Separatorがポイントの場合、デフォルトのCSVの区切り文字はカンマになりますが、Decimal Separator_がカンマの場合、デフォルトのCSVの区切り文字はセミコロンになります。

コメントでご自身がおっしゃっているように、MacユーザーがこれらのCSVファイルを素早く見るための代替手段があります。それは quicklook-csv と呼ばれる Quick Look のプラグインで、セパレータの検出を処理します。

11
Advertisement
11
11
2017-06-02 12:27:39 +0000
Advertisement

sep=,の周りに引用符は必要ありません - ファイルの最初の行であれば、少なくともExcel 2016では動作します。

私は、ファイルがタブ区切りであれば、引用符の有無に関わらず、sep=\tは問題なく動作することを発見しました。

5
5
5
2018-07-21 11:55:56 +0000

受け入れられた答えは正しいですが、私は視覚的な人です。ここでは、Windows 10でこれを行う方法のスクリーンショット形式のすべての単一のステップです。

1
Advertisement
1
1
2019-09-23 12:03:13 +0000
Advertisement

セパレータ.csvと地域設定をリストセパレータ;に設定した;ファイルを持っていたのですが、Excelではまだ列が解析されませんでした。しかし、Excelではまだ列が解析されませんでした。SQL Server Management Studio 2005からエクスポートしたファイルは、UCS-2 LE BOMでエンコードされていました。メモ帳++を使用して、エンコーディングをUTF-8に切り替えたところ、すべてが動作するようになりました。

1
1
1
2018-06-25 14:46:53 +0000

地域設定の区切り文字がカンマではなくセミコロン(オランダ語の区切り文字)の場合は、CSVファイルの名前をTXTファイルに変更します。TXTファイルを右クリックして「で開く」を選択し、「Excel」を選択します。Excelで最初の列を選択し、リボンでデータを選択し、テキストを列に区切ります。

OR

LibreOfficeをインストールし、LibreOffice CalcでCSVファイルを開きます。

0
Advertisement
0
0
2018-01-22 13:50:36 +0000
Advertisement

オランダ語の場合、Windows 7 の Excel 2008 が RFC4180 に準拠していないという問題がありました:

「改行(CRLF)、二重引用符、カンマを含むフィールドは二重引用符で囲むべきです。オランダ語のロケールでは、10進数の区切り文字は,、リストの区切り文字は;なので、Excelは両方に,が使われているファイルを読み取ることができませんでした(コントロールパネルでリストの区切り文字を明示的に,に変更しても読み取れませんでした)。

"06-07-2017 17:03:18"," ********",0:01:04,Uitgaand,"0,1879","0,2273","0,0395",21

解決策は @user280725 によって与えられました:

Use Notepad to insert as a first line:

sep=,

(これは、彼の解決策の中のユーザー @zakinster のノートがもはや適用される必要がないことを意味します。 )


面白いことに、csvファイルが読み込まれている状態で、コントロールパネルでロケールをUS Englishに設定してファイルを保存すると、US English形式に変換されています(リストセパレータとしてカンマ、10進数セパレータとしてドット)。

0
0
0
2017-06-12 17:22:25 +0000

必ずメモ帳のような簡単なエディタでCSVファイルが正しくフォーマットされていることを確認してください。

VBで作成したCSVファイルがExcelで別々の列で開かないという愚かなバグを解決した後にこの回答を追加しました。行の書き方が各行を引用符で包んでいたことがわかりました。Excelは引用符を隠してA列に行全体を表示し、カンマ区切りを無視しているように見えました。

0
Advertisement
0
0
2017-07-31 06:30:51 +0000
Advertisement

最良の方法は、csv拡張子

Sub ExportToCSV()
    Dim i, j As Integer
    Dim Name As String

    Dim pathfile As String

    Dim fs As Object
        Dim stream As Object

        Set fs = CreateObject("Scripting.FileSystemObject")
    On Error GoTo fileexists

    i = 15
    Name = Format(Now(), "ddmmyyHHmmss")
    pathfile = "D:\" & Name & ".csv"

    Set stream = fs.CreateTextFile(pathfile, False, True)

fileexists:

    If Err.Number = 58 Then
        MsgBox "File already Exists"
        'Your code here
        Return
    End If
    On Error GoTo 0

    j = 1
    Do Until IsEmpty(ThisWorkbook.ActiveSheet.Cells(i, 1).Value)

        stream.WriteLine (ThisWorkbook.Worksheets(1).Cells(i, 1).Value & ";" & Replace(ThisWorkbook.Worksheets(1).Cells(i, 6).Value, ".", ","))

        j = j + 1
        i = i + 1
    Loop

stream.Close

End Sub
```のテキストファイルに保存することです。
Advertisement

関連する質問

6
13
9
10
6
Advertisement