Macro grabada hasta fila 2000, aumentar el rango de filas no importa el numero de filas.
Para Dante Amor
Muy buenas tardes, tengo una macro que grabe que aplica una fórmula en ciertos rangos, pero cuando la grabe, solo jale la fórmula hasta la fila 2000, el problema es que ahora procese un archivo con más registros y la fórmula se aplica aun hasta la fila 2000, quisiera ver si se puede modificar a fin de que se aplique a la columna no importando el numero de registros
La fórmula esta en la fila "S" y lo que hace es concatenar la columna "R" basan adose en la columna "C" cuando encuentre un registro en la columna "B". Esta es la macro :
Sub Concatenar_concepto() Application.ScreenUpdating = False Sheets("COMPROBANTES CDFI").Select Rows("1:1").Select Range("BE1").Activate Selection.Delete Shift:=xlUp Columns("BF:BF").Select Selection.Copy Sheets("FORMATO INGRESOS").Select Range("O1").Select Selection.End(xlToLeft).Select Columns("B:B").Select Selection.Insert Shift:=xlToRight Columns("S:S").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight Range("S1").Select ActiveCell.FormulaR1C1 = "CONCEPTO CONCATENADO" Range("S2").Select ActiveCell.FormulaR1C1 = _ "=CONCATENARSI(RC[-16]:R[1998]C[-16], RC[-17], RC[-1]:R[1664]C[-1],,,"" "")" ActiveWindow.SmallScroll Down:=-18 Range("S2").Select Selection.AutoFill Destination:=Range("S2:S2000") Range("S2:S2000").Select Application.ScreenUpdating = True End Sub
y la Formula que aplico ahi es esta tal vez te pueda ayudar a entender que hice mal.
Function CONCATENARSI(Criterios As Range, Condicion As String, Datos As Range, _
Optional Exacto As Boolean = False, Optional OmitirBlancos As Boolean = False, _
Optional Separa As String = " ") As String
Dim Criterio As Range
Dim Siguiente As Integer
Dim Coincide As Boolean
Dim Concatenar As Boolean
Dim Cadena As String
Cadena = ""
For Each Criterio In Criterios 'Asigna un valor a criterio dependiendo del número de criterios seleccionados
Siguiente = Siguiente + 1 'Esta es una variable contador
If Exacto Then 'Se condiciona si el valor de la variable exacto es falso o verdadero
Coincide = Criterio = Condicion 'Si el criterio y la condición son iguales la variable coincide cambia a verdadero
Else
Coincide = LCase(Criterio) = LCase(Condicion) 'Si el criterio y la condición son iguales la variable coincide cambia a verdadero
End If
If Coincide Then 'Se condiciona si el valor de la variable coincide es falso o verdadero
If OmitirBlancos Then 'Se condiciona que las celdas a concatenar no están vacías
Concatenar = Not IsEmpty(Datos.Cells(Siguiente))
Else
Concatenar = True 'Se asigna verdadero a la variable concatenar
End If
If Concatenar Then
If Len(Cadena) > 0 Then 'Condiciona para agregar el separador a la cadena de texto
Cadena = Cadena & Separa
End If
nvodato = Datos.Cells(Siguiente) 'Nvodato es el valor del de la celda del rango de la variable datos
If InStr(Cadena, nvodato) = 0 Then 'compara si nvodato se encuentra en la cadena de texto cadena
Cadena = Cadena & Datos.Cells(Siguiente) 'Se agrega el valor de la celda de datos a concatenar en la cadena de texto
Else
End If
End If
End If
Next
CONCATENARSI = Cadena 'asigna el valor de la variable a la función concatenarSI
End Function