In your data file, the number of members in each PREC set is included as a member of the set. This does not seem right, and it explains why you got 2 2 9 as the members of one of the sets. To include just the members shown in the spreadsheet, you could use the following approach:
param pmax = 5;
param Pval {setBL,1..pmax} default -1;
set PREC {j in setBL} = setof {pr in 1..pmax} Pval[j,pr] diff {-1};
table prec IN "ODBC" "Newman.xls" "prec": [j ~ setBL], {pr in 1..pmax} <Pval[j,pr] ~ ("P"&pr)>;
read table prec;
This table statement syntax is described in chapter 10 of the AMPL book, in the subsection "Indexed collections of data columns." Even for >1000 sets as in the spreadsheet you posted, it runs very fast.