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

csv microsoft-excel

私はいくつかの.csvファイルを持っています。それらのいくつかはカンマ区切りで、いくつかはタブ区切りです(多分それらは.tsv …と呼ばれるべきでしょう)

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

ファイル -> インポート…の代わりに、ファイルを選択して、内容を正確に解釈する方法(区切り文字、データ型など)を選択することができますが、ほとんどの場合、私は単に明確なテーブルビューを通してファイルを見たいだけです。エクセルで処理したいわけではありません

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

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

  111  Szabolcs  2013-06-11


ベストアンサー

CSVファイルを開いている間、ExcelはList separatorと呼ばれるシステムの地域設定を使用して、使用するデフォルトの区切り文字を決定します

Microsoft Excelは.csvファイルを開きますが、システムの地域設定によっては、カンマの代わりにセミコロンを区切り文字として使用する場合があります。(Wikipediaより)


Windowsの場合は、Officeサポートサイトで指定されているList separatorの設定をRegional and Language Optionsに変更することができます

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

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

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

Mac OS Xでは、この設定は10進数セパレータの設定から推測されるようです(システム環境設定の「言語と地域」ペインの「詳細設定」に進みます)。小数点区切り文字がポイントの場合、デフォルトのCSV区切り文字はカンマになりますが、小数点区切り文字がカンマの場合、デフォルトのCSV区切り文字はセミコロンになります

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

99  zakinster  2013-06-11


ファイルの形式を変更したいわけではなく、ExcelをONLY対象としている場合は、以下のExcelのコツを参考にしてみてください

ファイルの先頭に"sep=,"(引用符を含む)というテキストで改行を追加し、Excelがリストの区切り文字として「,」でファイルを開くようにします

これは、Windowsの地域設定を変更せず、一貫した結果を得るための非常に簡単なトリックです。しかし、これはエクセル特有のものです

115  user280725  2013-12-10


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

ファイルがタブ区切りの場合、sep=\tは引用符があってもなくても問題なく動作することを発見しました

13  Stephen Hemingway  2017-06-02


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

enter image description here enter image description here enter image description here enter image description here enter image description here enter image description here

8  Sam B  2018-07-21


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

OR

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

2  Eric VDB  2018-06-25


私は、セパレータ .csv ファイルにセパレータ ; を設定し、地域設定をリストセパレータ ; に設定していました。しかし、Excelはまだ列を解析しませんでした

enter image description here

エンコードの問題であることが判明しました。ファイルはSQL Server Management Studio 2005からエクスポートされ、UCS-2 LE BOMでエンコードされていました。メモ帳++を使って、エンコーディングをUTF-8に切り替えたら、すべてが動作するようになりました

1  Ogglas  2019-09-23


CSVファイルが適切にフォーマットされていることを確認するために、必ずメモ帳のような簡単なエディタでCSVファイルを検査してください

VBで作成したCSVファイルがエクセルで列を分けて開かないというアホなバグを解決してから、この回答を追加しました。私は、行の書き方が各行を引用符で囲んでいたことを発見しました。エクセルは引用符を隠してA列に行全体を表示し、カンマ区切りを無視しているように見えました

0  edj  2017-06-12


最良の方法は、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:\1\" & 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

0  AzizD  2017-07-31


オランダ人の私は、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さんからいただきました

メモ帳を使って1行目として挿入します

sep=,

(これは、ユーザーの @zakinster さんのソリューションでの注意事項を適用する必要がなくなったことを意味します)。


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

0  Paul Ogilvie  2018-01-22


タイトルとURLをコピーしました