Excel 基于列值拆分CSV文件的最简单方法

Excel 基于列值拆分CSV文件的最简单方法,excel,csv,ms-office,openoffice-calc,Excel,Csv,Ms Office,Openoffice Calc,我有一个很大的列表,列出了世界上我试图按国家划分的每个城市。手动实现这一点是非常乏味的,因为人们相信有更好的方法来实现这一点。这就引出了下面的问题 根据一列中的相似值将CSV文件拆分为更小的CSV文件的最简单/最佳方法是什么 我已经看到这个问题用两种不同的方式回答了,假设这个人问我有C++的经验,我不这样认为。我对Java有非常基本的了解,对Linux有更多的经验,对Windows和MicrosoftOffice更有经验 任何朝正确方向的推动都是有帮助的 感谢您抽出时间阅读本文。非常感谢您提供的

我有一个很大的列表,列出了世界上我试图按国家划分的每个城市。手动实现这一点是非常乏味的,因为人们相信有更好的方法来实现这一点。这就引出了下面的问题

根据一列中的相似值将CSV文件拆分为更小的CSV文件的最简单/最佳方法是什么

我已经看到这个问题用两种不同的方式回答了,假设这个人问我有C++的经验,我不这样认为。我对Java有非常基本的了解,对Linux有更多的经验,对Windows和MicrosoftOffice更有经验

任何朝正确方向的推动都是有帮助的


感谢您抽出时间阅读本文。非常感谢您提供的所有帮助。

显然,您可以通过多种不同的方式来完成此任务-如果您使用的是Windows,则为PowerShell提供了一个很好的一行程序,用于根据列中的值拆分csv文件:

Import-Csv file.csv | Group-Object -Property "department" | 
    Foreach-Object {$path=$_.name+".csv" ; $_.group | 
    Export-Csv -Path $path -NoTypeInformation}
file.csv
替换为您的csv文件,并将
中的“部门”
替换为您要拆分文件的列标题。它将根据所选列中的每个唯一值写入新的csv


如果您从未使用过Powershell,这是一个不错的介绍。

由于您是手动操作的,我假设您不一定需要代码来实现这一点。我不熟悉Powershell,因此无法对chrisb的回答发表评论。如果你能让它工作,它看起来会比我的解决方案简单,但如果你不能,那么你可以尝试以下方法:

  • 在excel中打开您的csv文件
  • 如果顶部行中尚未插入标题行,请在顶部行中插入标题行
  • 在菜单中,转到数据并单击过滤器。您将在所有标题中看到漏斗图标
  • 在国家/地区标题中,选择要获取记录的国家/地区。您将只看到所选国家/地区的城市
  • 将过滤后的列复制到另一个excel工作表中,并另存为CSV文件
  • 对所有国家重复这一过程

如果您想进一步自动化它,那么可能需要进行一些编码

在Linux或macOS上,您可以使用
awk
(其中2是要拆分的列索引):

输入文件 cities.csv:

1,london,uk
2,paris,france
3,bristol,uk
4,lyon,france
输出文件 cities-in-uk.csv:

1,london,uk
3,bristol,uk
city-data-paris.csv:

2,paris,france
4,lyon,france

这正是我要找的!非常感谢。。希望我能在不久的将来支付这笔钱!
2,paris,france
4,lyon,france