Excel 从CSV文件中获取数据,然后根据列出的不同日期进行比较
我有一个CSV文件(),它按歌曲在电台播放的顺序列出歌曲。每次播放歌曲时都会列出它们,因此每天都会有一些重复的歌曲 我想做的是把它分成几天,找到从前一天开始播放的新歌 例如,星期一、星期二播放的歌曲与星期一播放的歌曲基本相同,但有些歌曲是星期一没有播放的新歌Excel 从CSV文件中获取数据,然后根据列出的不同日期进行比较,excel,powershell,csv,Excel,Powershell,Csv,我有一个CSV文件(),它按歌曲在电台播放的顺序列出歌曲。每次播放歌曲时都会列出它们,因此每天都会有一些重复的歌曲 我想做的是把它分成几天,找到从前一天开始播放的新歌 例如,星期一、星期二播放的歌曲与星期一播放的歌曲基本相同,但有些歌曲是星期一没有播放的新歌 我可以使用PowerShell执行此操作吗?在Excel中执行此操作相当简单 首先,你需要确保你的日子在它自己的专栏里 例如: A1 B1 C1 D1 E1
我可以使用PowerShell执行此操作吗?在Excel中执行此操作相当简单 首先,你需要确保你的日子在它自己的专栏里 例如:
A1 B1 C1 D1 E1 F1 G1 H1
Date Time Artist Song Date Time Artist Song
21/03/2014 11:26 Pharrell Happy 20/03/2014 23:54 Clean Bandit Rather Be
现在在I1中,有这个公式
=VLOOKUP(H1,D1:D94,1,FALSE)
你H专栏中的任何不适用都将是当天播放的新歌
对于更多的日子,您可以从下一列(J)开始播放第二天的歌曲,然后在第二天和第三天之间使用公式。我认为这可以做到,但需要注意的是:
,,
$songs = Import-Csv .\songs.csv
$songsByDay = ($songs | Group-Object "Date" | Sort-Object -Property "Name")
$previousDay = @()
foreach ($day in $songsByDay) {
write "----"
write $day.Name
foreach ($song in @($day.Group)) {
if ($song.Song -notin $previousDay) {
write "$($song.Artist) - $($song.Song)"
}
}
$previousDay += @($day.Group | %{ $_.Song })
}
这太棒了,谢谢你,看起来会很好用的。是否有任何方法可以稍微修改脚本。与其只检查前一天,我们可以让它检查所有前一天吗?另外,我可以输出艺术家和歌曲名称吗?e、 g.所以输出应该是(艺术家-标题),而不仅仅是标题。@user3444441用更新的版本编辑了我的答案。再修改一次,如何将此结果输出到HTML文件?@user3444441不确定;使用
ConvertTo HTML
需要完全不同的重建,或者更可能是自己将HTML片段写入文件,例如,使其更像write“$song.Artist…”>>output.HTML
我一直在努力解决的问题,您在哪里声明变量$previousDay,或者这是一个全局变量?
$songs = Import-Csv .\songs.csv
$songsByDay = ($songs | Group-Object "Date" | Sort-Object -Property "Name")
$previousDay = @()
foreach ($day in $songsByDay) {
write "----"
write $day.Name
foreach ($song in @($day.Group)) {
if ($song.Song -notin $previousDay) {
write "$($song.Artist) - $($song.Song)"
}
}
$previousDay += @($day.Group | %{ $_.Song })
}