Rellenar celdas con números de mes de acuerdo a la comparación de criterios con macros

Tengo un archivo Excel con registros de Comprobantes de Pago, en la columna "M" esta la fecha de cada pago de Comprobante de Pago, es el caso que como son muchos registros me gustaría que al presionar un botón en una columna determinada se rellenen las celdas con números de acuerdo a la fecha en consulta.

En la columna "N" lo he estado haciendo con un bucle SI en excel, pero este bucle tiene un limite, luego del cual sale un aviso que no puede calcular por exceso de anidamiento, entonces la solución sería con macros, para eso explico lo que se desea realizar. En la columna "N" dice que si fecha("M") esta en el periodo 21/01/2015 al 20/02/2015 poner "2", luego sucesivamente si fecha ("M") esta en el rango 21/02/2015 al 20/03/2015 poner "3" y así sucesivamente, esto por que las valorizaciones que se hacen en esta entidad son de 21 a 20 de cada mes.

Respuesta
2

Esta es mi respuesta si alguien puede mejorarlo estaría seria genial. Gracias a todos.

Sub MesCorresponde()
Application.ScreenUpdating = False
Set h1 = Sheets("1600 comp")
febrero1 = Range("B1") '21/01/2015
febrero2 = Range("B2") '20/02/2015
marzo1 = Range("C1") '21/02/2015
marzo2 = Range("C2") '20/03/2015
abril1 = Range("D1") '21/03/2015
abril2 = Range("D2") '20/04/2015
mayo1 = Range("E1") '21/04/2015
mayo2 = Range("E2") '20/05/2015
junio1 = Range("F1") '21/05/2015
junio2 = Range("F2") '20/06/2015
julio1 = Range("G1") '21/06/2015
julio2 = Range("G2") '20/07/2015
agosto1 = Range("H1") '21/07/2015
agosto2 = Range("H2") '20/08/2015
setiembre1 = Range("I1") '21/08/2015
setiembre2 = Range("I2") '20/09/2015
octubre1 = Range("J1") '21/09/2015
octubre2 = Range("J2") '20/10/2015
noviembre1 = Range("K1") '21/10/2015
noviembre2 = Range("K2") '20/11/2015
diciembre1 = Range("L1") '21/11/2015
diciembre2 = Range("L2") '20/12/2015
enero1 = Range("M1") '21/12/2015
enero2 = Range("M2") '20/01/2016
i = 9
Do While h1.Cells(i, "M") <> ""
       If h1.Cells(i, "M").Value >= febrero1 And h1.Cells(i, "M").Value <= febrero2 Then
          h1.Cells(i, "AC") = 2
            ElseIf h1.Cells(i, "M").Value >= marzo1 And h1.Cells(i, "M").Value <= marzo2 Then
                h1.Cells(i, "AC") = 3
                ElseIf h1.Cells(i, "M").Value >= abril1 And h1.Cells(i, "M").Value <= abril2 Then
                    h1.Cells(i, "AC") = 4
                    ElseIf h1.Cells(i, "M").Value >= mayo1 And h1.Cells(i, "M").Value <= mayo2 Then
                        h1.Cells(i, "AC") = 5
                        ElseIf h1.Cells(i, "M").Value >= junio1 And h1.Cells(i, "M").Value <= junio2 Then
                            h1.Cells(i, "AC") = 6
                            ElseIf h1.Cells(i, "M").Value >= julio1 And h1.Cells(i, "M").Value <= julio2 Then
                                h1.Cells(i, "AC") = 7
                                ElseIf h1.Cells(i, "M").Value >= agosto1 And h1.Cells(i, "M").Value <= agosto2 Then
                                    h1.Cells(i, "AC") = 8
                                    ElseIf h1.Cells(i, "M").Value >= setiembre1 And h1.Cells(i, "M").Value <= setiembre2 Then
                                        h1.Cells(i, "AC") = 9
                                        ElseIf h1.Cells(i, "M").Value >= octubre1 And h1.Cells(i, "M").Value <= octubre2 Then
                                            h1.Cells(i, "AC") = 10
                                            ElseIf h1.Cells(i, "M").Value >= noviembre1 And h1.Cells(i, "M").Value <= noviembre2 Then
                                                h1.Cells(i, "AC") = 11
                                                ElseIf h1.Cells(i, "M").Value >= diciembre1 And h1.Cells(i, "M").Value <= diciembre2 Then
                                                    h1.Cells(i, "AC") = 11
                                                    Else
                                                    If h1.Cells(i, "M").Value >= enero1 And h1.Cells(i, "M").Value <= enero2 Then
                                                       h1.Cells(i, "AC") = 11
       End If
       End If
    i = i + 1
Loop
   Application.ScreenUpdating = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas