Rellenar un rango conforme a una condición

Hola, estoy intentando rellenar un rango y me da un error de fórmula no válida constantemente.
Tengo un rango de 5 celdas: C1:H1 y quería que mostrasen el texto "SE1" en cada celda conforme a un valor(entre 0 y 5) en otra celda (G35 por ejemplo). Las fórmulas que uso son estas:
Fórmula en celda C1
=SI($G$35 = 0, C1="SE1") esta funciona...
Formula en celda D1
=SI($G$35 = 1, C1="SE1" and D1="SE1") esta ya no funciona
Formula en celda E1
=SI($G$35 = 2, C1="SE1" and D1="SE1" and E1="SE1") no funciona
Y así sucesivamente hasta completar el rango
Pensé que lo podría hacer usando fórmulas SI pero parece que no. ¿Podría ser con fórmulas SI anidadas en lugar de individuales?
Lo complejo además es que otra celda (G55) contiene el número de filas consecutivas(Entre 1 y 4) que quiero rellenar de esta manera pero si la fila 1 tiene hasta 5 celdas con el valor "SE1", la fila 2 llevará el texto "SE2" y la 3 el "SE3" y finalmente la 4 el "SE4".
Entonces mi pregunta es: ¿Es mejor una macro? Le digo cuantas filas y cuantas columnas con esos dos valores en G35 y G55 y me rellena cada fila con su texto correspondiente hasta completar el número de columnas. ¿Eso es factible? ¿Y de serlo podríais ayudarme con la macro?
Muchas gracias por vuestra ayuda. Saludos!

1 respuesta

Respuesta
1
Esta medio enredado tu asunto, no me quedó bastante claro pero aver según lo que yo entendí es que de acuerdo al valor de G35 las celdas vayan poniendo un texto, bueno a ver el 1er. Caso sería así:
Pon esta fórmula en las celdas C1, D1, E1, F1, G1, H1
=SI(ESNUMERO($G$35),"SE1"," ")
Para el segundo punto es esto: Celdas C2,D2,E2,F2,G2,H2
=SI(ESNUMERO($G$55),"SE2"," ")
Y para el tercero
=SI(ESNUMERO($G$55),"SE3"," ")
Espero sea lo que necesitas y si no expliame un poco más
Sí perdona, seguramente no me he explicado bien porque es un poco jaleo pero gracias por responder! Intentaré explicarlo de forma decente.
Me gustaría conseguir lo siguiente: Rellenar un rango de celdas con tan solo 2 condiciones. Se que el rango de celdas empieza en C8 pero no donde acaba ya que el tamaño de este rango viene definido por las condiciones.
1ªCondición (celda G34): valor numérico entre 1 y 6 = número de columnas del cuadro
2ªCondición (celda G49): valor numérico entre 1 y 4= número de filas del cuadro
Con estos dos datos ya tendré el rango de celdas que debo rellenar con los siguientes valores:
La fila 1 se rellenará con el texto SE1
La fila 2 con SE2, la 3 con SE3 y la 4 con SE4
Ejemplo:
Valores:    G34= 3   G49=4
Tabla (empezando en C8):
SE1 SE1 SE1
SE2 SE2 SE2
SE3 SE3 SE3
SE4 SE4 SE4
Espero que haya quedado un poquito más claro. Muchísimas gracias!
Ah ok ahora si ya te entendí:
Mira para hacerlo con fórmulas si es complicado, así que mejor con una macro queda perfecto, por lo que aquí te mando el código que debes utilizar, ya lo probé y funciona a la perfección, sOlo te aclaro que siempre tomará las referencias de las celdas que me acabas de dar, es decir, empezara a poner valores a partir de la celda C8, tomará el número de columnas que se establezca en la celda G34 y el número de filas el valor de la celda G49. Espero sea lo que necesitas. Solo copia y pega este código a tu editor VBA y ejecutalo.
Sub establecer_valores()
        Range("G34").Select
        columna = ActiveCell.Value - 1
        Range("G49").Select
        fila = ActiveCell.Value2 - 1
        Range("C8").Select
        Range(Selection, Selection.Offset(fila, columna)).Select
        Selection.Value = "OK"
        ActiveCell.Select
        While ActiveCell <> ""
                ActiveCell.Value = "SE1"
                ActiveCell.Offset(0, 1).Select
        Wend
        regreso = (columna * -1) - 1
        ActiveCell.Offset(0, regreso).Select
        ActiveCell.Offset(1, 0).Select
        If ActiveCell <> "" Then
        While ActiveCell <> ""
                ActiveCell.Value = "SE2"
                ActiveCell.Offset(0, 1).Select
        Wend
        regreso = (columna * -1) - 1
        ActiveCell.Offset(0, regreso).Select
        ActiveCell.Offset(1, 0).Select
        End If
        If ActiveCell <> "" Then
        While ActiveCell <> ""
                ActiveCell.Value = "SE3"
                ActiveCell.Offset(0, 1).Select
        Wend
        regreso = (columna * -1) - 1
        ActiveCell.Offset(0, regreso).Select
        ActiveCell.Offset(1, 0).Select
        End If
        If ActiveCell <> "" Then
        While ActiveCell <> ""
                ActiveCell.Value = "SE4"
                ActiveCell.Offset(0, 1).Select
        Wend
        regreso = (columna * -1) - 1
        ActiveCell.Offset(0, regreso).Select
        ActiveCell.Offset(1, 0).Select
        End If
End Sub
Vaya! Lo he probado y está genial! Eres todo un master no hay duda!
Mientras esperaba la respuesta me puse a hacerlo con fórmulas y como dices es un dolor de cabeza enorme. Tanto que ni si quiera he terminado aún de poner todas las fórmulas y siempre algo falla.
Oye, Muchísimas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas