SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Macro Función que nos obtiene el siguiente número
consecutivo
Vamos a hacer a continuación una función que nos determine el siguiente número consecutivo en
un campo llave dentro de una tabla de Excel. Supongamos que tenemos la siguiente tabla.
Lo que va hacer la función es obtener el siguiente número consecutivo, que en este caso seria
“028”. Tenemos que buscar dentro de la primera columna el valor máximo y luego agregarle la
unidad y luego convertirlo en texto.
La función va a contener como parámetro el rango donde están las claves existentes que van a ser
recorridas para determinar cuál de ellas es la mayor, por lo tanto la declaramos asi:
Public Function siguiente_consecutivo(ByVal rango As String) As String
End function
A continuación declaramos las variables que vamos a necesitar
Dim dvalormaximo As Integer 'Se usa para almacenar el valor máximo
Dim valor_actual As Integer 'Se usa para almacenar el valor del elemento actual
Dim renglon_inicial As Integer 'Almacena la fila donde empieza la revisión
Dim renglon_final As Integer ' Almacena la fila donde termina la revisión
Dim dcolumna As Integer 'Almacena la columna donde se hace la revisión
Dim i As Integer 'Contador del ciclo de recorrido
Dim posicion As Byte 'Posición del separador de rango
Dim celda_inicial As String 'Almacena la celda de inicio de revisión
Dim celda_final As String 'Almacena la celda de fin de revisión
Dim longitud_rango As Byte 'Almacena el número de caracteres del rango
Ahora vamos a separar del rango la celda inicial y la celda final determinando la ubicación del
separador de rango, que en este caso son los dos puntos.
'Obtener la posicion del separador de rango (:)
posicion = InStr(1, rango, ":")
'Longitud del rango
longitud_rango = Len(rango)
'Celda inicial del rango como referencia
celda_inicial = Left(rango, posicion - 1)
'Celda final del rango como refencia
celda_final = Right(rango, longitud_rango - posicion)
'Obtenemos el numero de fila de la celda inicial
numero_inicial = Range(celda_inicial).Row
'Obtenemos el número de fila de la celda final
numero_final = Range(celda_final).Row
'Obtenemos el numero de columna donde esta la lista
dcolumna = Range(celda_inicial).Column
Inicializamos la variable que almacena el valor maximo en 0
dvalor_maximo = 0
Hacemos el recorrido de cada una de las claves evaluando si es el máximo valor.
For i = numero_inicial To numero_final
valor_actual = Val(Cells(i, dcolumna).Value)
If valor_actual > dvalor_maximo Then
dvalor_maximo = valor_actual
End If
Next i
Después de hacer el recorrido el valor máximo estará almacenado en la variable dvalor_maximo,
el cual le aumentamos una unidad y lo convertimos en texto a 3 posiciones y lo asignamos al
resultado de la función
siguiente_consecutivo = Format(dvalor_maximo + 1, "000")
De esta manera el código completo queda como sigue:
Public Function siguiente_consecutivo(ByVal rango As String) As String
Dim dvalormaximo As Integer 'Se usa para almacenar el valor maximo
Dim valor_actual As Integer 'Se usa para almacenar el valor del elemento actual
Dim renglon_inicial As Integer 'Almacena la fila donde empieza la revision
Dim renglon_final As Integer ' Almacena la fila donde termina la revision
Dim dcolumna As Integer 'Almacena la columna donde se hace la revision
Dim i As Integer 'Contador del cliclo de recorrido
Dim posicion As Byte 'Posicion del separador de rango
Dim celda_inicial As String 'Almacena la celda de inicio de revision
Dim celda_final As String 'Almacena la celda de fin de revision
Dim longitud_rango As Byte 'Almacena el numero de caracteres del rango
posicion = InStr(1, rango, ":")
longitud_rango = Len(rango)
celda_inicial = Left(rango, posicion - 1)
celda_final = Right(rango, longitud_rango - posicion)
numero_inicial = Range(celda_inicial).Row
numero_final = Range(celda_final).Row
dcolumna = Range(celda_inicial).Column
dvalor_maximo = 0
For i = numero_inicial To numero_final
valor_actual = Val(Cells(i, dcolumna).Value)
If valor_actual > dvalor_maximo Then
dvalor_maximo = valor_actual
End If
Next i
siguiente_consecutivo = Format(dvalor_maximo + 1, "000")
End Function
Ahora solo falta que la usemos en alguna celda como sigue:
=siguiente_consecutivo(“A3:A29”)
Fuente http://sintad.com.mx/macros%20excel/index.html

Más contenido relacionado

Similar a Macro función que nos obtiene el siguiente número consecutivo

Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funcionesmoii Hp
 
Taller de lenguaje 1
Taller de lenguaje 1Taller de lenguaje 1
Taller de lenguaje 1Yesenia Gomez
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basicYesenia Bautista
 
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)Oscar Josué Uh Pérez
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]herminiajimenez123
 
Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Javazousbabastre
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxErisbeymarin
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en javaRobert Wolf
 
Ejercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdfEjercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdfLuis Segovia
 

Similar a Macro función que nos obtiene el siguiente número consecutivo (20)

Funciones
FuncionesFunciones
Funciones
 
Unidad6 funciones
Unidad6 funcionesUnidad6 funciones
Unidad6 funciones
 
javascript2.ppt
javascript2.pptjavascript2.ppt
javascript2.ppt
 
Material iii parcial
Material iii parcialMaterial iii parcial
Material iii parcial
 
Funciones
FuncionesFunciones
Funciones
 
Taller de lenguaje 1
Taller de lenguaje 1Taller de lenguaje 1
Taller de lenguaje 1
 
Funciones propias de visual basic
Funciones propias de visual basicFunciones propias de visual basic
Funciones propias de visual basic
 
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)
Funciones de cadenas - Javascript para principiantes (fácil, rápido y efectivo)
 
Vectores y matrices
Vectores y matricesVectores y matrices
Vectores y matrices
 
Vectores en power point [recuperado]
Vectores en power point [recuperado]Vectores en power point [recuperado]
Vectores en power point [recuperado]
 
Lenguaje de Programacion - Java
Lenguaje de Programacion - JavaLenguaje de Programacion - Java
Lenguaje de Programacion - Java
 
Exposicion iac
Exposicion iacExposicion iac
Exposicion iac
 
Implementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en TextoImplementación de Aplicaciones Basadas en Texto
Implementación de Aplicaciones Basadas en Texto
 
Abc algoritmos
Abc algoritmos Abc algoritmos
Abc algoritmos
 
Arrays en VB 6.0
Arrays en VB 6.0Arrays en VB 6.0
Arrays en VB 6.0
 
Arreglos en c++2020
Arreglos en c++2020Arreglos en c++2020
Arreglos en c++2020
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
Ejercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdfEjercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdf
 
SlE ADSI
SlE ADSISlE ADSI
SlE ADSI
 

Último

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 

Último (7)

BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 

Macro función que nos obtiene el siguiente número consecutivo

  • 1. Macro Función que nos obtiene el siguiente número consecutivo Vamos a hacer a continuación una función que nos determine el siguiente número consecutivo en un campo llave dentro de una tabla de Excel. Supongamos que tenemos la siguiente tabla. Lo que va hacer la función es obtener el siguiente número consecutivo, que en este caso seria “028”. Tenemos que buscar dentro de la primera columna el valor máximo y luego agregarle la unidad y luego convertirlo en texto.
  • 2. La función va a contener como parámetro el rango donde están las claves existentes que van a ser recorridas para determinar cuál de ellas es la mayor, por lo tanto la declaramos asi: Public Function siguiente_consecutivo(ByVal rango As String) As String End function A continuación declaramos las variables que vamos a necesitar Dim dvalormaximo As Integer 'Se usa para almacenar el valor máximo Dim valor_actual As Integer 'Se usa para almacenar el valor del elemento actual Dim renglon_inicial As Integer 'Almacena la fila donde empieza la revisión Dim renglon_final As Integer ' Almacena la fila donde termina la revisión Dim dcolumna As Integer 'Almacena la columna donde se hace la revisión Dim i As Integer 'Contador del ciclo de recorrido Dim posicion As Byte 'Posición del separador de rango Dim celda_inicial As String 'Almacena la celda de inicio de revisión Dim celda_final As String 'Almacena la celda de fin de revisión Dim longitud_rango As Byte 'Almacena el número de caracteres del rango Ahora vamos a separar del rango la celda inicial y la celda final determinando la ubicación del separador de rango, que en este caso son los dos puntos. 'Obtener la posicion del separador de rango (:) posicion = InStr(1, rango, ":") 'Longitud del rango longitud_rango = Len(rango) 'Celda inicial del rango como referencia celda_inicial = Left(rango, posicion - 1) 'Celda final del rango como refencia celda_final = Right(rango, longitud_rango - posicion) 'Obtenemos el numero de fila de la celda inicial numero_inicial = Range(celda_inicial).Row 'Obtenemos el número de fila de la celda final numero_final = Range(celda_final).Row 'Obtenemos el numero de columna donde esta la lista dcolumna = Range(celda_inicial).Column Inicializamos la variable que almacena el valor maximo en 0 dvalor_maximo = 0
  • 3. Hacemos el recorrido de cada una de las claves evaluando si es el máximo valor. For i = numero_inicial To numero_final valor_actual = Val(Cells(i, dcolumna).Value) If valor_actual > dvalor_maximo Then dvalor_maximo = valor_actual End If Next i Después de hacer el recorrido el valor máximo estará almacenado en la variable dvalor_maximo, el cual le aumentamos una unidad y lo convertimos en texto a 3 posiciones y lo asignamos al resultado de la función siguiente_consecutivo = Format(dvalor_maximo + 1, "000") De esta manera el código completo queda como sigue: Public Function siguiente_consecutivo(ByVal rango As String) As String Dim dvalormaximo As Integer 'Se usa para almacenar el valor maximo Dim valor_actual As Integer 'Se usa para almacenar el valor del elemento actual Dim renglon_inicial As Integer 'Almacena la fila donde empieza la revision Dim renglon_final As Integer ' Almacena la fila donde termina la revision Dim dcolumna As Integer 'Almacena la columna donde se hace la revision Dim i As Integer 'Contador del cliclo de recorrido Dim posicion As Byte 'Posicion del separador de rango Dim celda_inicial As String 'Almacena la celda de inicio de revision Dim celda_final As String 'Almacena la celda de fin de revision Dim longitud_rango As Byte 'Almacena el numero de caracteres del rango posicion = InStr(1, rango, ":") longitud_rango = Len(rango) celda_inicial = Left(rango, posicion - 1) celda_final = Right(rango, longitud_rango - posicion) numero_inicial = Range(celda_inicial).Row numero_final = Range(celda_final).Row dcolumna = Range(celda_inicial).Column dvalor_maximo = 0 For i = numero_inicial To numero_final valor_actual = Val(Cells(i, dcolumna).Value) If valor_actual > dvalor_maximo Then dvalor_maximo = valor_actual
  • 4. End If Next i siguiente_consecutivo = Format(dvalor_maximo + 1, "000") End Function Ahora solo falta que la usemos en alguna celda como sigue: =siguiente_consecutivo(“A3:A29”) Fuente http://sintad.com.mx/macros%20excel/index.html