Como hacer en excel lo siguiente...

Tengo estos datos:
a,b,b,c,c,b,c,a,a,b,b,b
Cada letra esta en una celda todas contigua, los datos siempre serán a, b, c, lo que quiero es saber como conseguir el máximo y mínimo seguido de una determinada letra y reflejar en una celda la secuencia de una letra ordenada de mayor a menor.
Como creo que no está claro lo que quiero pongo lo que quiero con respecto a la letra b y según la secuencia de letras que puse al principio:
Maximo de b seguidas= 3
Minimo de b seguidas= 1
Secuencia letra b= 3-2-1.
Gracias por adelantado.
Saludos.

1 respuesta

Respuesta
1
Creo que entiendo lo del máximo y mínimo, pero no lo de la secuencia. Te voy a poner un ejemplo y me dices si lo hago bien:
a,b,b,a,b,a,c,b,b,a,a,a
LETRA B:
Máximo: 2
Mínimo: 1
Secuencia: 2-2-1
¿Es eso?
Otra cosa, ¿en qué celdas están EXACTAMENTE los datos y donde quieres los resultados?
Por ejemplo a mi se me ocurre que:
Los datos están empezando por la celda A1 y pueden llegar hasta la A100 y los resultados tienen que estar al lado, pero no importa donde mientras se vean bien. Eso si, la secuencia ordenada tiene que tener cada valor en una celda separada, uno al lado de otro.
El ejemplo que me pones es lo justo lo que quiero.
Los Datos están desde A1 y pueden llegar a O1, y los resultado a ser posibles al lado, el que la secuencia tenga que ir en celdas separadas no creo sea mayor problema, pues creo que luego podría concatenarlas.
Si no es factible o es más fácil teniendo los datos en vertical desde A1 a A15, me dices como hacerlo en vertical.
Saludos,
Juanlu
De momento no tengo más tiempo y te he hecho esto:
Sub BuscarMinimoyMaximo()
Dim LetraActual As String
Dim LetraAnterior As String
Dim min As Integer
Dim max As Integer
Dim contador As Integer
min = 0
max = 0
contador = 1
LetraAnterior = ""
Range("A1").Select
LetraActual = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
While ActiveCell.Address <> "$Q$1"
If LetraAnterior = "a" Then
If LetraActual = "a" Then
contador = contador + 1
Else
If min > contador Or min = 0 Then
min = contador
End If
If max < contador Then
max = contador
End If
contador = 1
End If
End If
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
Wend
Range("Q3").Value = min
Range("Q4").Value = max
min = 0
max = 0
contador = 1
LetraAnterior = ""
Range("A1").Select
LetraActual = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
While ActiveCell.Address <> "$Q$1"
If LetraAnterior = "b" Then
If LetraActual = "b" Then
contador = contador + 1
Else
If min > contador Or min = 0 Then
min = contador
End If
If max < contador Then
max = contador
End If
contador = 1
End If
End If
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
Wend
Range("Q5").Value = min
Range("Q6").Value = max
min = 0
max = 0
contador = 1
LetraAnterior = ""
Range("A1").Select
LetraActual = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
While ActiveCell.Address <> "$Q$1"
If LetraAnterior = "c" Then
If LetraActual = "c" Then
contador = contador + 1
Else
If min > contador Or min = 0 Then
min = contador
End If
If max < contador Then
max = contador
End If
contador = 1
End If
End If
ActiveCell.Offset(0, 1).Select
LetraAnterior = LetraActual
LetraActual = ActiveCell.Value
Wend
Range("Q7").Value = min
Range("Q8").Value = max
End Sub
Pruébalo y veras que solo te busca los mínimos y máximos de las letras a, b y c.
Pon tu los títulos en la columna P
Hasta pronto,
Ramon
Pues si funciona perfectamente.
El problema es mi desconocimiento de programación.
Que debo hacer para poder incorporar ese código como función y que me haga lo mismo tanto en ese rango de celdas como en otro. Por ejemplo si se puede pegar como función pegarlo en la celda que 20 y me calcule los datos de las celdas a20 a o20.
Gracias
Saludos,
Juanlu
No, esto no se puede pegar como función, pero si que se puede crear un botón que al presionarlo ejecute el código (si te interesa me lo preguntas y te diré como)
Luego, para variar los rangos de las celdas, tanto de los valores de origen como de donde tiene que ir el resultado, te explico cuales son las lineas del código que tienes que cambiar:
Range("A1").Select
Esto selecciona la primera celda donde hay valores, por lo que si quieres empezar en otro sitio, cambia A1 por la celda que quieras, por ejemplo A20.
ActiveCell.Offset(0, 1).Select
Esto hace que se desplace hacia la derecha, por lo que si quisieras deplzarte hacia abajo, tendrías que poner:
ActiveCell.Offset(1, 0).Select
Range("Q3").Value = min
Range("Q4").Value = max
Estas 2 lineas escriben los resultados de los valores mínimo y máximo en Q3 y Q4.
Si te fijas, el código es prácticamente el mismo repetido 3 veces, uno para cada letra: a, b, c
Rápidas respuestas y solución de mis problemas.
Gracias por el interés mostrado y por tu tiempo dedicado a mi problema.
Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas