У меня есть диапазон ячеек, и я хочу накопить, сколько раз столбец имеет максимальное значение для данной строки.
Образец:
headers -> a b c d e f g h
0 0 12 18* 1 0 0 0
30* 0 15 25 0 0 0 0
35 0 19 31 0 0 31 50*
40 10 19 31 0 2 5 55*
ожидал:
#max val per row-> 1 0 0 1 0 0 0 2
Максимальные значения отмечены звездочкой. Столбец a
получает 1 балл, потому что он имеет максимальное значение во второй строке данных, столбец d
также получает 1 балл, потому что он имеет максимальное значение в первой строке данных, а столбец h
получает 2 балла, потому что он имеет максимальное значение в третьей строке. и четвертые строки данных. Остальные столбцы не имеют максимального значения ни в одной строке, поэтому им присваивается 0.
Только для одной строки я могу скопировать эту формулу для каждого столбца, и она будет делать это, но мне нужно что-то, что применяет максимальное количество строк COUNTIF(B2:B10, MAX($B2:$B10))
.
Я написал этот скрипт приложений Google, но мне не нравится его отзывчивость (видеть «Загрузка ...» в ячейке почти на секунду - это отчасти раздражает по сравнению с быстротой, которую вы получаете с собственными функциями):
function countMaxInRange(input) {
return [input.map(function(row) {
var m = Math.max.apply(null, row);
return row.map(function(x){return x === m && 1 || 0});
}).reduce(function(a, b){
var s = Array(a.length);
for (var i = 0; i < a.length; i++) {
s[i] = (a[i] + b[i]) || 0;
}
return s;
})];
}
Есть идеи, как я могу заменить этот код встроенными функциями? Меня не волнует добавление дополнительных строк или столбцов, если их количество постоянно (то есть, если я расширяю свой набор данных, я не хочу вручную добавлять дополнительные вспомогательные строки или столбцы для каждой новой строки или столбца данных. ).
Я думаю, что мог бы добавить дополнительный столбец, который собирает заголовок столбца с максимальным значением для каждой строки; а затем для каждого столбца данных посчитайте, сколько раз их заголовок появляется в этом дополнительном столбце, но не кажется очень чистым.