[英]Using a Perl script how to sum values in one column based on another column in Excel?
我是 Perl 编程的新手。 假设我们在 Excel 工作簿的工作表A
中有 2 列。
AB Volume
100 280
137 250
150 375
100 100
100 600
137 200
现在,我想在另一张纸中输出。 假设B
。 我想根据AB
总结Volume
。
输出应该是这样的:
AB Volume
100 980
137 450
150 375
请帮助我实现这一目标。
这是我为此编写的代码
#!/usr/bin/perl -w
use strict;
use Spreadsheet::Read;
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::Worksheet;
use Excel::Writer::XLSX;
my $workbook = ReadData ("Book1.xlsx");
my $worksheet = $workbook->[1];
my $max_rows = $worksheet->{'maxrow'};
my $max_cols = $worksheet->{'maxcol'};
my $C1;
my $total = 0;
my $sum;
my $workbook_new = Excel::Writer::XLSX->new('New.xlsx');
my $worksheet2 = $workbook_new->add_worksheet();
for my $row_num (1..($max_rows))
{
if ($row_num>1)
{
my $temp1 = 'A'.$row_num;
$C1 = $workbook->[1]{$temp1};
for $row_num (1..($max_rows))
{
if ($row_num>1)
{
my $D1 = 'A'.$row_num;
my $D2 = $workbook->[1]{$D1};
if ($C1 = $D2)
{
my $Z2 = 'B'.$row_num;
$sum = $workbook->[1]{$Z2};
$total= $sum + $total;
}
}
}
print "value of C :".$C1 "SUM :".$total."\n";
}
}
我没有得到正确的输出,也无法弄清楚如何将输出写入 Excel 文件 New.xlsx。
首先使用Spreadsheet::ParseExcel和Spreadsheet::WriteExcel (将结果再次输入 Excel 文件)。
逐行将值添加到散列中; 像这样的事情应该可以解决问题:
for (2 .. $worksheet->row_range()) {
$total{ $worksheet->get_cell($_, 1) } += $worksheet->get_cell($_, 2);
}
这意味着最后你的哈希%total
应该有你正在寻找的结果:
{
100 => 980,
137 => 450,
150 => 375
}
您只需要填写文件的解析和写入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.