Macro para seguir secuencia dependiendo de la referencia

Dante, buen día, lo molesto con la siguiente inquietud, de acuerdo a lo solicitado en la "Macro desde una fila y columna de referencia", le comento que esta excelente la macro pero adaptando la macro, me di cuenta que necesito algo mas... Si bien sigue la secuencia correctamente, tambien necesito que si por ejemplo, empieza con S y quiero que el próximo inmediato en la secuencia sea VB

1 Respuesta

Respuesta
1

¿Y cómo saber si quieres la secuencia 1 o la secuencia 2?

El orden es est:

S,S,G,S,S,VB,S,S,G,S,S,VB2

Entonces, si hay una S, la siguiente puede ser S, G, VB o VB2, cómo va a saber la macro cuál es la siguiente.

Ahora veo que en la imagen pusiste M, ¿M?

Eso es lo que en realidad quiero saber si la macro puede saber si despues de la S hay una G o VB o VB2, en las M fue error de tipeo en realidad son S, dado que estaba realizando otro trabajo las cuales consisten en M. Para es mi es muy complejo lo que solicito y estuve jugando con la macro que me pasaste en la preg anterior.

Si escribes 3 letras en la referencia la macro podría saber cuál es la siguiente letra, pero si solamente pones una letra, no se puede.

Olvídate de la macro, por lógica, si yo te digo "S", ¿tú dime cuál es la siguiente letra?

ahhhh!!!!entonces de que forma cargo en la referencia la secuencia, si yo quiero que sea la G la primer letra de la macro

G es en la imagen no MT...disculpa

Esta es la secuencia:

S,S,G,S,S,VB,S,S,G,S,S,VB2

1,2,3,4,5, 6 ,7,8,9,10,11,12

La que veo es que hay 12 letras, ¿correcto?

Lo que hice fue numerarlas del 1 al 12. La 1 para la "S", el 2 para la "S", el 3 para la "G"... el 6 para VB y así hasta el 12 para VB2. ¿Me explico?

Siguiendo la lógica anterior, si quieres que la siguiente letra sea VB, y la VB tiene el número 6, entonces en la referencia tienes que poner el número 5.

De esa forma la macro toma el número 5, el siguiente número del 5 es el número 6, la macro toma el 6 y busca cuál es la letra que le corresponde al número 6= VB. Entonces la macro tomaría VB y lo pondría en la siguiente celda.

Otro ejemplo:

Si quieres que el siguiente sea G, entonces en referencia pones el número anterior a G, puede ser 2 u 8, tú decides en dónde va a empezar la secuencia.

Lo que pondrías en referencia sería un número y no una letra.

Avísame si estás de acuerdo y preparo la macro.

Es lo que necesitaría porque es anual y solo necesito que entre una por mes y esta bien que sea la referencia un num va a quedar perfecto.

Te anexo la macro:

Sub Secuencia()
'Por.Dante Amor
    Application.ScreenUpdating = False
    uf = Range("B" & Rows.Count).End(xlUp).Row
    If uf < 3 Then uf = 3
    uc = Cells(2, Columns.Count).End(xlToLeft).Column
    Range(Cells(3, "P"), Cells(uf, uc)).ClearContents
    letras = Array("", "S", "S", "G", "S", "S", "VB", "S", "S", "G", "S", "S", "VB2")
    For i = 3 To uf
        If IsNumeric(Cells(i, "O")) Then
            sig = Cells(i, "O") + 1
            If sig = 13 Then sig = 1
            For j = Columns("C").Column To Columns("N").Column
                If IsDate(Cells(i, j)) And Cells(i, j) <> "" Then
                    Set b = Rows(2).Find(Cells(i, j), LookAt:=xlWhole, LookIn:=xlFormulas)
                    If Not b Is Nothing Then
                        Cells(i, b.Column) = letras(sig)
                        sig = sig + 1
                        If sig = 13 Then sig = 1
                    End If
                End If
            Next
        End If
    Next
    Application.ScreenUpdating = True
    MsgBox "Terminado", vbInformation
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas