Estoy tratando de obtener la última Cadena (desde el lado derecho) de las celdas en una columna, pero no puedo resolverlo.
Tengo este código que obtendría los primeros tres dígitos del lado izquierdo, pero sí, eso no funcionará.
var first_3_digs = values.filter(r => { if(r.toString().includes('_')){return r;} }).map(r=> r.toString().split('_')[0]);Por ejemplo, si quiero como entrada CS_1*44u, quiero la salida u. Lo mismo para ml, l, etc...
Si necesita más información, por favor hágamelo saber.
Muchas gracias por la ayuda.
Ejemplo de cómo obtener las 'unidades' de varias celdas:
const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[Az]+$/)[0] : ''; var texts = ['CS_1*44u', 'Case', '72x64ml', '11x37kg', '123']; texts.forEach(x => console.log(unit(x))); // --> 'u', '', 'ml', 'kg', ''Ejemplo de cómo obtener la 'unidad' de una celda:
const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[Az]+$/)[0] : ''; var cell_value = 'CS_1*44u'; console.log(unit(cell_value)); // --> 'u'Si necesita obtener la matriz de las 'unidades' de otra matriz de celdas, puede asignar la función de esta manera:
const unit = x => /[\d]+[\D]+/.test(x) ? x.match(/[Az]+$/)[0] : ''; var cells = ['CS_1*44u', 'Case', '72x64ml', '11x37kg', '123']; var units = cells.map(x => unit(x)); // <---- here console.log(units); // --> ['u', '', 'ml', 'kg', '']como ha etiquetado fórmulas para una posible solución, ofreceré la siguiente fórmula REGEXEXTRACT:
=REGEXEXTRACT(K1,"[^(\d+(\.\d+)?)(?!.*\d+(\.\d+)?)]*$")explicación:
DESPUÉS de la última aparición de "a":
[^a]*$ÚLTIMO dígito (con o sin decimal):
(\d+(\.\d+)?)(?!.*\d+(\.\d+)?)[EDITAR]
donde \d significa un número, aquí hay una alternativa (más corta) que también se prueba para trabajar con el mismo conjunto de datos:
=REGEXEXTRACT(K1,"[^\d]*$")