I think that there are 2 things that might help you here. The first is the
write_col() worksheet method which will write a column or an array of data in one go.
The second is that since a formula is initially only a string you can generate it programmatically based on the number of cells that you have. Both of these points are shown in this short example:
#/usr/bin/perl -wl
use strict;
use Spreadsheet::WriteExcel;
my $workbook = Spreadsheet::WriteExcel->new("z.xls");
my $worksheet = $workbook->add_worksheet();
my @column = (
'pass',
'fail',
'pass',
'pass',
);
my @array = (
[ '1', '00A', 'pass' ],
[ '2', '01A', 'fail' ],
[ '3', '01B', 'fail' ],
[ '4', '02A', 'pass' ],
);
$worksheet->write_col('B2', \@column);
$worksheet->write_col('D2', \@array);
# Generate the formula.
my $first_row = 2; # B2 in this example
my $last_row = $first_row + @array -1;
$worksheet->write('H2', '=COUNTIF(F2:F' . $last_row . ', "FAIL")'
+);
__END__
--
John.