Ruptura de rachas en una serie de dos valores repetidos
publicado
¡Cuánto tiempo sin pasarme por aquí! Es buena señal, ya que me voy arreglando solito
Hola a todos,
Estoy elaborando una tabla en la cual van a aparecer dos valores, a y b (tal cual, estos dos caracteres) en varias celdas de cada fila (por ahora, la fila 1), aleatoriamente, y pudiendo haber huecos (celdas vacías) entre valores. Es decir, que yo tengo un carácter POR CELDA y, además, posibles huecos, tal que 5 caracteres ocuparían 5 celdas, a razón de 1 carácter por celda. Y con huecos, a veces, que no hacen más que molestar Podría quedar algo así, cada carácter en su celda respectiva de la fila 1:
a _ a b a* _ _ _ a _ a b b b a... (hasta 31 casillas, y siendo _ celda vacía)
Tal y como pongo en el archivo adjunto, la idea es poder contar las veces que el carácter "a" cambia a "b" o al revés ("romper la racha"), incluso si hay celdas vacías -que no siempre- entre medio de esos caracteres, en cada fila. En el ejemplo que he inventado arriba hay, ignorando espacios (se deben ignorar, son "nulos"), un total de 4 rupturas, las he subrayado. Las cadenas iguales "a a a" cuentan como si fueran un único grupo, incluso con espacios. La marcada con * es que hay dos juntas (ab, y ba)
Puede que os sea más fácil imaginarlo con una ruleta: apuesto al rojo, rojo, negro (¡ruptura de racha!), negro, negro, negro, rojo (¡ruptura de racha!), etc., y quiero contar esas variaciones en los resultados.
Me es fácil comparar una celda y su adyacente y ver si existe esta ruptura de serie o racha:
sub contar_racha
racha=0 'Inicio la macro poniendo a cero el contador, y que no dé error si no hay rupturas (todo puede ser)
for i=1 to 30 'Por ejemplo, para las 30 primeras columnas
if cells(1, i)="a" and cells(1, i+1)="b" then racha = racha+1 'así compruebo los cambios a>b y los acumulo
if cells(1, i)="b" and cells(1, i+1)="a" then racha = racha+1 'así compruebo los cambios b>a y los acumulo
'(...) E iría contando lo de las otras casillas siguiendo con el next
'(...)
msgbox racha 'Para ver el recuento final
end sub[/CODE]
He rehecho esta parte de la macro de memoria, aviso Pero no puedo hacerlo de ninguna de las maneras si hay X celdas vacías en la fila, y el problema es que pueden variar en cantidad. He intentado hacer que Excel busque y compare más allá de las siguientes celdas vacías (a la derecha de la celda activa), pero no lo consigo, o me cuenta valores repetidos, por la forma en que monté mis primeras macros-test. ¿Qué sería más eficaz en términos de rendimiento (velocidad): una macro o una fórmula...? Porque tendré que contar 'unos cuantos' miles de casillas, creo X)
Un saludo a todos y gracias de antemano por el interés
¡Cuánto tiempo sin pasarme por aquí! Es buena señal, ya que me voy arreglando solito
Hola a todos,
Estoy elaborando una tabla en la cual van a aparecer dos valores, a y b (tal cual, estos dos caracteres) en varias celdas de cada fila (por ahora, la fila 1), aleatoriamente, y pudiendo haber huecos (celdas vacías) entre valores. Es decir, que yo tengo un carácter POR CELDA y, además, posibles huecos, tal que 5 caracteres ocuparían 5 celdas, a razón de 1 carácter por celda. Y con huecos, a veces, que no hacen más que molestar
Podría quedar algo así, cada carácter en su celda respectiva de la fila 1:
a _ a b a* _ _ _ a _ a b b b a ... (hasta 31 casillas, y siendo _ celda vacía)
Tal y como pongo en el archivo adjunto, la idea es poder contar las veces que el carácter "a" cambia a "b" o al revés ("romper la racha"), incluso si hay celdas vacías -que no siempre- entre medio de esos caracteres, en cada fila. En el ejemplo que he inventado arriba hay, ignorando espacios (se deben ignorar, son "nulos"), un total de 4 rupturas, las he subrayado. Las cadenas iguales "a a a" cuentan como si fueran un único grupo, incluso con espacios. La marcada con * es que hay dos juntas (ab, y ba)
Puede que os sea más fácil imaginarlo con una ruleta: apuesto al rojo, rojo, negro (¡ruptura de racha!), negro, negro, negro, rojo (¡ruptura de racha!), etc., y quiero contar esas variaciones en los resultados.
Me es fácil comparar una celda y su adyacente y ver si existe esta ruptura de serie o racha:
He rehecho esta parte de la macro de memoria, aviso
Pero no puedo hacerlo de ninguna de las maneras si hay X celdas vacías en la fila, y el problema es que pueden variar en cantidad. He intentado hacer que Excel busque y compare más allá de las siguientes celdas vacías (a la derecha de la celda activa), pero no lo consigo, o me cuenta valores repetidos, por la forma en que monté mis primeras macros-test. ¿Qué sería más eficaz en términos de rendimiento (velocidad): una macro o una fórmula...? Porque tendré que contar 'unos cuantos' miles de casillas, creo X)
Un saludo a todos y gracias de antemano por el interés
rachas.xls