// CountIf.cms 2010.11.23 by あすかぜ // 特定の条件のセルを数える関数を提供します。 // 編集・再配布は自由です。 // // * same(l, t, r, b, str) // * including(l, t, r, b, str) // * startsWith(l, t, r, b, str) // * endsWith(l, t, y, b, str) // * greaterThan(l, t, r, b, val) // * greaterEquals(l, t, r, b, val) // * lessThan(l, t, r, b, val) // * lessEquals(l, t, r, b, val) // t 行 l 列から b 行 r 列までの中から、 // 内容が str と一致するセルを数えます。 function same(l, t, r, b, str){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if([x,y] == str){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容に str が含まれるセルを数えます。 function including(l, t, r, b, str){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if(pos([x,y], str) > 0){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容に str で始まるセルを数えます。 function startsWith(l, t, r, b, str){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if(pos([x,y], str) == 1){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容に str で終わるセルを数えます。 function endsWith(l, t, r, b, str){ strlen = len(str); count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if(pos([x,y], str) == (len([x,y]) - strlen + 1)){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容が val よりも大きいセルを数えます。 function greaterThan(l, t, r, b, val){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if([x,y] > val){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容が val よりも大きいか等しいセルを数えます。 function greaterEquals(l, t, r, b, val){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if([x,y] >= val){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容が val よりも小さいセルを数えます。 function lessThan(l, t, r, b, val){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if([x,y] < val){ count++; } } } return count; } // t 行 l 列から b 行 r 列までの中から、 // 内容が val よりも小さいか等しいセルを数えます。 function lessEquals(l, t, r, b, val){ count = 0; for(y = t; y <= b; y++){ for(x = l; x <= r; x++){ if([x,y] <= val){ count++; } } } return count; }