Hola, Michael.
Se puede hacer de muchas maneras, aquí una posible implementación que explota los "mapas" de JavaScript:
/**
* Cuenta el nº de veces que se repite un elemento dentro de un vector
* @param {Array} lista
* @returns {Array} Vector de pares [elemento, nº de repeticiones]
*/
function contarElementosAux(lista) {
let repeticiones = new Map();
lista.forEach(elemento => {
const elementos = repeticiones.get(elemento);
if (elementos == undefined) {
repeticiones.set(elemento,1);
} else {
repeticiones.set(elemento, elementos + 1);
}});
return [...repeticiones];
}
function test() {
const vector = [1, 2, 3, 4, 2, 5, 6, 2, 1, 4, 5];
console.info1('Lista de elementos: ', vector);
console.info1('Resultado: ', contarElementosAux(vector));
}

Y con mínimos cambios esto se puede transformar en una función personalizada para hojas de cálculo que cuenta cuántas veces se repiten los elementos de un intervalo de celdas (no necesariamente solo vector fila o columna):
/**
* Función personalizada para hdc:
* Cuenta el nº de veces que se repite un elemento dentro de un intervalo de celdas
* @param {A1:A10} lista de elementos
* @returns Vector de pares [elemento, nº de repeticiones]
* @customfunction
*/
function CONTARELEMENTOS(lista) {
lista = lista.flat().filter(elemento => elemento != '');
let repeticiones = new Map();
lista.forEach(elemento => {
const elementos = repeticiones.get(elemento);
if (elementos == undefined) {
repeticiones.set(elemento,1);
} else {
repeticiones.set(elemento, elementos + 1);
}
});
return [...repeticiones];
}
