Microsoft Excelは、日常の多くのタスクに優れています。しかし、時々、スプレッドシートのサイズという短所に出くわします。Excelスプレッドシートを小さくする方法や、大きなCSVファイルを複数のファイルに分割する方法を説明しており、選択できる方法がいくつかあります。
大きなCSVを複数のファイルに分割する理由
「なぜ大きなExcelファイルを複数の小さなファイルに分割する必要があるのか」と思うかもしれません。Excelのスプレッドシートの行の制限が1,048,576であることを考えると、興味深い質問です。
100万行を超える行数は驚異的に聞こえます。しかし、特に特定のタスク中は、行の制限に達するのは思ったより簡単です。たとえば、メールでマーケティングを行っている場合、何百万ものメールアドレスを含むCSVファイル(CSVファイルとは?)をインポートすることがあります。唯一の問題は、そのアドレスを何個も入力したスプレッドシートをどのように管理するかです。さらに、誰かがすでに制限を超えているCSV(別のプログラムから)を送信してきたらどうでしょうか。
それが直面する可能性のある問題のように聞こえる場合は、大きなCSVまたはExcelファイルを複数の小さなファイルに分割する次の5つの方法を確認してください。
大きなCSVファイルが手元にないけれど、家で試してみたいですか?例では、ダウンロードして使用できるCOVID-19 Open Research Datasetを使用しています。
1. プログラムを使用してCSVファイルを分割する
役立つCSVスプリッタープログラムがいくつかあります。ここではそのうちの2つを紹介します。ただし、これらのプログラムは動作しますが、メモリの問題が発生することがあります。これは、CSV分割プログラムの一般的な問題です。
Free Huge CSV Splitter
Free Huge CSV Splitterは、基本的なCSV分割ツールです。分割するCSVファイル、使用する行数を入力し、[Split File]を選択します。行数によって、最終的に出力されるファイルの数が決まります。
CSV Splitter
CSV Splitterは2つ目のツールです。Free Huge CSV Splitterとほぼ同じ機能を提供しますが、デザインが少し洗練されています。CSVを小さなチャンクにすばやく分割し、使用する行数を決定できます。
2. バッチファイルを使用する
次に、プログラム可能なバッチファイルを作成します。バッチファイルを使用して、CSVを小さなチャンクに処理し、ファイルをカスタマイズして異なるチャンクを提供できます。
新しいテキストドキュメントを開き、次の内容をコピーして貼り付けます。
@echo off setlocal ENABLEDELAYEDEXPANSION REM Edit this value to change the name of the file that needs splitting. Include the extension. SET BFN=HCAHPSHospital.csv REM Edit this value to change the number of lines per file. SET LPF=2500 REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list. SET SFN=HosptialSplitFile REM Do not change beyond this line. SET SFX=%BFN:~-3% SET /A LineNum=0 SET /A FileNum=1 For /F "delims==" %%l in (%BFN%) Do ( SET /A LineNum+=1 echo %%l >> %SFN%!FileNum!.%SFX% if !LineNum! EQU !LPF! ( SET /A LineNum=0 SET /A FileNum+=1 ) ) endlocal Pause
実行する前にバッチファイルを構成する必要があります。各コマンドの機能を説明します。バッチファイルのサイズと必要な出力に合わせて変更できます。
- 「SET BFN =」は、分割する必要があるCSVを指す必要があります
- 「SET LPF =」は、新しいファイルを制限する行数です
- 「SET SFN =」は、分割されたファイルの新しい命名規則です
変数を入力したら、[ファイル] > [名前を付けて保存]に進みます。ファイル名を選択し、[保存]を選択します。次に、新しく保存したテキストファイルを選択してF2を押して名前を変更します。.txt拡張子を.batに置き換え、警告が表示されたら[OK]を押します。これで、大きなCSVファイルを小さな出力ファイルに分割できます。
3. PowerShellスクリプトを使用してCSVファイルを分割する
バッチファイルは、さまざまな日常業務に使用できます。しかし、PowerShellスクリプトは、特にこの種の処理や分割には高速です。
次のスクリプトは、大きなCSVをすばやく小さなファイルに分割します。
まず、CTRL + Xを押してWindowsの電源メニューを開き、[PowerShell]を選択します。PowerShellがオプションでない場合は、スタートメニューの検索バーにpowershellと入力し、最良の一致を選択します。
次に、次のスクリプトをコピーして貼り付けます。
$InputFilename = Get-Content 'C:\ファイル\場所' $OutputFilenamePattern = 'output_done_' $LineLimit = 50000 $line = 0 $i = 0 $file = 0 $start = 0 while ($line -le $InputFilename.Length) { if ($i -eq $LineLimit -Or $line -eq $InputFilename.Length) { $file++ $Filename = "$OutputFilenamePattern$file.csv" $InputFilename[$start..($line-1)] | Out-File $Filename -Force $start = $line; $i = 0 Write-Host "$Filename" } $i++; $line++ }
最初の行のファイルの場所をCSVファイルに置き換え、スクリプトを実行します。スクリプトは、ユーザーディレクトリに小さなCSVファイルを出力します。たとえば、私のCSVファイルはC:\Users\Gavinにあり、ファイル名はoutput_done_1.csvです。$OutputFilenamePattern = 'output_done_'行を変更することで、出力名を変更できます。
元のスクリプトはSPJeffにあります。
4. Power Pivotを使用して大きなCSVを分割する
大きなCSVファイルを小さなビットに分割するという最後から2番目の解決策は、実際にはそれを分割しません。むしろ、巨大なCSVファイルをExcelにロードして、Power Pivotツールを使用して開くことができます。そうです。Excelの行の制限を効果的に無視して、プログラム内でファイルを管理できます。
CSVファイルへのデータリンクを作成し、Power Pivotを使用してコンテンツを管理することで、これを実現します。詳しい説明とチュートリアルについては、Jose Barretoのブログでプロセスを詳しく説明しています。
簡単に言えば、Barretoは「最大850万行を問題なく」使用してピボットテーブルを作成します。上の画像はブログ記事からのもので、Excelで合計200万行が使用されていることがわかります。
このプロセスでは、CSVは小さなチャンクに分割されません。ただし、CSVをExcelで操作できるようになるため、非常に便利な代替手段となります。さらにヒントが必要な場合は、データ分析にピボットテーブルを使用する方法を確認してください。
5. Split CSVを使用してオンラインで大きなCSVを分割する
大きなCSVファイルを小さなビットに分割するオンラインサービスもあります。そのようなオプションの1つは、無料のオンラインCSVスプリッターであるSplit CSVです。
Split CSVは、COVID-19のデータセットをうまく管理し、便利なチャンクに分割しました。他のツールと同様に、各ファイルの行数を定義し、それを分割します。ただし、テストする大きなCSVファイルが手元にありませんでした。そのため、状況は異なる場合があります。
Split CSVには、プレミアムオプションも含まれています。サブスクリプション料金を支払うことで、カスタム区切り記号を使用したり、出力ファイルの種類を選択したり、出力ファイルから特定の文字を削除したり、重複する行を削除したりできます。
CSVファイルを管理しやすいチャンクに分割する
これで、CSVファイルを小さなビットに分割し、管理しやすくするための5つのソリューションが用意されました。ソリューションは速度と管理できるCSVファイルのサイズが異なるため、自分に最適なソリューションを見つけるために試行錯誤する必要があるかもしれません。そして、何よりも素晴らしいのは?これらのCSV分割手法は、Windows 10とWindows 11で機能します。macOSとLinuxでもオンラインCSV分割ツールを使用できます!
コメントする