¿Cómo encontrar el último folio de registro e insertar el siguiente folio en las celdas coincidentes con criterio de búsqueda?

Solicito su valiosa ayuda para lo siguiente:

Tengo un libro con dos hojas, la hoja1 contiene la BD y la hoja2 contiene un formato de consulta, quisiera que me apoyen con una rutina para buscar y mostrar el último folio consecutivo de un rango de columna especifico, para saber rápidamente cuál fue el numero anterior y poder escribir el siguiente folio en una celda especifica del formato de consulta que previamente he diseñado o incluso se podría hacer que dicho folio se escriba automáticamente.

Es importante aclarar que los folios de registro en la BD no están ordenados de manera descendente, sino de manera aleatoria, además de que en algunas celdas del rango también tienen datos de tipo texto, lo que hace que se me dificulte la búsqueda, además de que los folio se registran de la siguiente forma, ejem. "028/21" (número y año).

Y luego de escribir el folio, que al presionar un botón dicho folio se guarde en todas las filas del rango de la hoja1 donde esta la BD y conforme a las coincidencias correspondientes al ID de búsqueda,

Ya tengo una rutina para llenar mi formato en Excel con los datos del cliente y los productos coincidentes pero hace falta resolver el tema de los folios antes mencionados.

Sin más quedo atenta a su gran ayuda.

1 Respuesta

Respuesta
2

Puedes aclarar lo siguiente:

Quisiera que me apoyen con una rutina para buscar y mostrar el último folio consecutivo de un rango de columna especifico

¿Cuál es ese rango?


Es importante aclarar que los folios de registro en la BD no están ordenados de manera descendente,... también tienen datos de tipo texto, ... los folio se registran de la siguiente forma, ejem. "028/21" (número y año).

Puedes poner varios ejemplos de los datos que tienes en ese "rango".


Y luego de escribir el folio, que al presionar un botón dicho folio se guarde en todas las filas del rango de la hoja1 donde esta la BD y conforme a las coincidencias correspondientes al ID de búsqueda,

Esa parte no la entiendo. ¿Cuál folio y en dónde debe guardarse?

Explícalo con imágenes.

Buenas noches, muchísimas gracias por su gentileza, disculpe la tardanza pasa que hoy fue un día muy complicado pero en este momento le envió las imágenes que responderán sus dudas.

El formato de consulta lo lleno con la función BuscarV, el Id es el RFC.

Los únicos datos nuevos que se agregan a la "BD" son el Folio y la Fecha  en la fila y columna correspondiente al ID del cliente, dichos datos serán los mismo para todas las facturas que coincidan con el ID, el resto de la información ya existe. Como se puede ver en la imagen de la "BD", en la columna FOLIO el ultimo numero es el 010/2021, entonces el siguiente sería 011/2021, pero considerando que la "BD" tiene más de 20,0000 filas y dicha numeración esta salteada, y para no equivocarme tengo que filtrar manualmente para saber cuál es el último folio y agregar el siguiente numero, así como la fecha y luego rellenar las celdas coincidentes.

Lo que intento hacer es que en el formato de consulta me muestre el último folio o que me indique cual es el que siguiente numero, pero como vera en la imagen la columna FOLIO también tiene texto, lo he intentado por medio de formulas pero no lo he logrado=(.  

Una vez identificado el siguiente folio en el formato de consulta, lo segundo seria escribir dicho folio en la celda "O14" y la fecha en "O15" y que se rellenaran de manera automática las celdas coincidentes en la "BD" con dichos valores. 

De ser posible me gustaría que se cargara el RFC en un combobox sin duplicados para que al seleccionar alguno se coloque el valor en la celda "B15" del formato de consulta y que se llenen todos los campos en color amarillo con el resto de la información.

Cabe señalar que los importes unitarios de las facturas no se requieren en el formato de consulta, sin embargo para obtener el importe total de las facturas el cual si es necesario, yo los muestro en un rango fuera del formato de impresión para poder obtener la suma total.

Gracias nuevamente por su ayuda, quedo atenta, que tenga un esplendido un fin de semana.

Hola maestro Dante, está todo en orden?

Este foro está fallando otra vez, no me avisó que habías enviando una respuesta.

De ser posible me gustaría que se cargara el RFC en un combobox sin duplicados para que al seleccionar alguno se coloque el valor en la celda "B15"

Si necesitas una macro para llenar el combobox con los RFC, entonces con macros podemos llenar todos los demás datos de la hoja "formato".

Envíame tu archivo para adaptar el código del combo.

Mi correo:

[email protected]

En el asunto del correo pon el título de la pregunta para saber de qué se trata el correo.

Ok. le he enviado el archivo.

¡Gracias! 

Te paso la primera parte:

Agregar un combobox y hacer la búsqueda de lo seleccionado en el combo.

El siguiente código en los eventos de ThisWorkbook

Private Sub Workbook_Open()
  Call CargaCombo
End Sub

El siguiente código en los eventos de la hoja "FORMATO"

Dim cargando As Boolean
Dim sh1 As Worksheet
'
Private Sub ComboBox1_Change()
'Por.Dante Amor
  Dim dato As Variant, fila As Variant
  Dim i As Long, j As Long, k As Long, n As Long
  Dim a As Variant, ky As Variant, b As Variant
  Dim dic As Object
  '
  Application.ScreenUpdating = False
  If cargando = True Then Exit Sub
  Set sh1 = Sheets("BD")
  Set dic = CreateObject("Scripting.Dictionary")
  cargando = True
  dato = ComboBox1.Value
  ComboBox1.Clear
  Range("D6:D15, E6, O5, D16, O16, L17").Value = ""
  '
  a = sh1.Range("B2:I" & sh1.Range("B" & Rows.Count).End(3).Row).Value
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  For i = 1 To UBound(a, 1)
    If a(i, 1) <> "" Then
      If Not dic.exists(a(i, 1)) Then
        'k = k + 1
        dic(a(i, 1)) = i
      Else
        dic(a(i, 1)) = dic(a(i, 1)) & "|" & i
      End If
    End If
  Next
  For Each ky In dic.keys
    If UCase(ky) Like "*" & UCase(dato) & "*" Then
      ComboBox1.AddItem ky
    End If
  Next
  ComboBox1.Value = dato
  '
  'Se activa una celda para que aparezca el combo completo
  Range("Z1000"). Activate
  ComboBox1. Activate
  ComboBox1. DropDown
  '
  Range("B6").Value = ComboBox1.Value
  If ComboBox1.ListIndex > -1 Then
    n = 6
    For Each fila In Split(dic(ComboBox1.Value), "|")
      If n = 6 Then
        Range("E6").Value = a(fila, 2)    'nombre
        Range("O5").Value = a(fila, 8)    'folio
        Range("D16").Value = a(fila, 5)   'concepto
        Range("O16").Value = a(fila, 6)   'Forma
        Range("D6").Value = a(fila, 3)    'factura
      Else
        Range("D" & n).Value = a(fila, 3)    'factura
      End If
      Range("L17").Value = Range("L17").Value + a(fila, 4)   'Importe
      n = n + 1
    Next
    Range("D6").Select
  End If
  cargando = False
  Application.ScreenUpdating = True
End Sub
'
Private Sub ComboBox1_DropButtonClick()
  If cargando = True Then Exit Sub
  ComboBox1.Value = ""
End Sub

Con esa parte se llena el Folio, los datos y el total de las facturas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas