Saltar al contenido

Macro que muestre datos iguales.


LaFlower

Recommended Posts

publicado

Hola que tal expertos, en esta ocasión recurro a ustedes ya que no tengo idea de como generar esta macro, lo eh hecho con la función de buscarv pero no me funciona tal cual yo quiero ya que solo me muestra el primer dato en el que coincide y los demás datos no me los toma en cuenta, espero me puedan ayudar a solucionar u orientar en como realizar lo siguiente.

Tengo un archivo de excel en donde tengo alrededor de 50 hojas cada una llamada ESTADO1,ESTADO2... asi sucesivamente... una de mis hojas se llama ACUMULADO que es donde tengo toda la información de la base de datos, por lo pronto ya logre que dependiendo del nombre de mi hoja se asigne a una celda dentro de ese libro (ESTADO1) es decir B1= ESTADO1; para hacer la comparación con la hoja ACUMULADO, pero no se como realizar esta comparación, ya que por ejemplo en mi hoja(ESTADO1) en la celda B1 esta el dato a comparar; en mi hoja(ACUMULADO) tengo el nombre de todos los ESTADOS en la celda F8 hasta F5000 lo que ocupo es que si por ejemplo en la celda F45, F55, F56 de la hoja ACUMULADO encuentra la palabra ESTADO1 entonces me extraiaga esos 3 datos en mi hoja llamada ESTADO1 en celdas definidas de antemano muchas gracias por la ayuda. Y por tomarse el tiempo de leer, comentar u aportar algo.

Saludos.

Invitado Cacho R
publicado

Sin ver el archivo de muestra tu explicación no es demasiado orientativa, ¿Sabes?

publicado

Perdon una gran disculpa; tal vez no soy la mejor explicando, ahora anexo archivo con un poquito mas de vision de lo que se pretende conocer o lograr... No se si se pudiera hacer la macro en forma general, es decir hacer solo una que al ejecutarla me muestre la informacion por libro, es decir si es acapulco muestre en la hoja acapulco lo que encontro, si es jalisco muestre lo que encontro sin necesidad de hacer tantas macros, o tendria que ser macro por hoja?

Ejemplo_MACRO.xls

publicado

Hola buen dia a todos!! Les comento que eh realizado varias pruebas, la verdad no soy nada buena en macros ni mucho menos programacion si alguien pudiera tomarse el tiempo y la molestia de ayudarme se los agradeceria mucho.

Que tenga un excelente inicio de semana.

Perdon una gran disculpa; tal vez no soy la mejor explicando, ahora anexo archivo con un poquito mas de vision de lo que se pretende conocer o lograr... No se si se pudiera hacer la macro en forma general, es decir hacer solo una que al ejecutarla me muestre la informacion por libro, es decir si es acapulco muestre en la hoja acapulco lo que encontro, si es jalisco muestre lo que encontro sin necesidad de hacer tantas macros, o tendria que ser macro por hoja?
publicado

Wow! Marco Antonio Muchisisimas gracias por el excelente aporte y por la pronta respuesta es exactamente lo que necesitaba que generara el reporte; solo tengo una pregunta, yo la verdad desconosco la programacion asi que si no es mucho pedir y abusar de tu altuistra ayuda, pero me gustaria saber si existe alguna forma de poner esa informacion que se genera en un hoja con formato especifico... a lo que entiendo en esta parte es donde se le asigna en que celda debe de empezar a distribuir la informacion:

Hoja.Range("A2:F" & Hoja.Range("A" & Rows.Count).End(xlUp).Row + 1).Cells.Clear

mi hoja con formato comienza desde el rango B15 en todas las hojas... quedaria asi

Hoja.Range("B15:F" & Hoja.Range("A" & Rows.Count).End(xlUp).Row + 1).Cells.Clear

En caso de que solo necesite tres columnas a extraer Numero, Fecha de ingreso y Estado, como podria lograr realizar esto, y tambien dependiendo de mi hoja con formato especifico por ejemplo si son 20 datos los que encuentra para SALINA CRUZ me los agregue sin perder el formato y si hace falta agregar los renglones que sean necesarios con el mismo formato lo haga sin problemas.

De antemano se que estoy pidiendo mucho, pero es de suma importancia para mi trabajo, apenas me estoy adentrando a las macros, ya que solo se majenar formulas de excel.

GRACIAS!! :D

Trate de subir un archivo ejemplo pero no me permite, tal vez estoy haciendo algun paso mal,dejo un link externo... saludos

Zippyshare.com

publicado

A ver si así lo ves mas claro.

Sub DistribuirPorEstado()

Dim Hoja As Worksheet


Application.ScreenUpdating = False
Sheets("ACUMULADO").Select


For Each Hoja In Sheets
If Hoja.Name <> ActiveSheet.Name Then
'Borra el rango A:F desde la fila 2 hasta el final de datos
Hoja.Range("A2:F" & Hoja.Range("A" & Rows.Count).End(xlUp).Row + 1).Cells.ClearContents
End If
Next


For x = 2 To Range("A" & Rows.Count).End(xlUp).Row
If x Mod 100 = 0 Then Application.StatusBar = "... Procesando fila " & x
For Each Hoja In Sheets
If Hoja.Name <> ActiveSheet.Name Then
If Range("F" & x) = Hoja.Range("A1") Then
PrimeraFilaLibre = Hoja.Range("A" & Rows.Count).End(xlUp).Row + 1
Hoja.Range("A" & PrimeraFilaLibre) = Range("A" & x) 'Número
Hoja.Range("B" & PrimeraFilaLibre) = Range("B" & x) 'Fecha de ingreso
Hoja.Range("C" & PrimeraFilaLibre) = Range("C" & x) 'Regional
Hoja.Range("D" & PrimeraFilaLibre) = Range("D" & x) 'Estado
Hoja.Range("E" & PrimeraFilaLibre) = Range("E" & x) 'Sucursal
Hoja.Range("F" & PrimeraFilaLibre) = Range("F" & x) 'Con acento
Exit For
End If
End If
Next
Next


End Sub


[/CODE]

publicado

Marco Antonio muchas gracias por tu valioso tiempo y tu experiencia en esto de las macros, y una gran disculpa por mi gran falta de conocimiento.

Lo que entendi es que si yo quiero seleccionar solo unas columnas, lo que hice fue comentar las lineas de codigo:

Hoja.Range("A" & PrimeraFilaLibre) = Range("A" & x) 'Número

Hoja.Range("B" & PrimeraFilaLibre) = Range("B" & x) 'Fecha de ingreso

'Hoja.Range("C" & PrimeraFilaLibre) = Range("C" & x) 'Regional

'Hoja.Range("D" & PrimeraFilaLibre) = Range("D" & x) 'Estado

'Hoja.Range("E" & PrimeraFilaLibre) = Range("E" & x) 'Sucursal

Hoja.Range("F" & PrimeraFilaLibre) = Range("F" & x) 'Con acento

Sustitui el Valor de "F" por "C" para que las otras columnas no aparecieran en blanco y asi se recorra la informacion, Ya con esta informacion que me hiciste favor de enviar me quedo un poquito mas claro ya logre seleccionar las celdas que quiero, pero ahora no se como colocarlas desde la celda B15 y de ahi me empieze a llenar la informacion, ya que se tiene un formato especifico para cada hoja y si mi formato solo tiene 3 filas con formato y resulta que extrajo informacion para 8 filas entonces que agregue esas 5 filas mas sin perder el formato, anexe un link con un ejemplo de mi hoja formato la cual se maneja en todas las demas, pero no logro nada al respecto. Gracias por abusar de su tiempo.

De antemano una gran disculpa por mi ignorancia y gracias por tu gran aporte.

publicado

Hola:

Lo siento LaFlower, pero AyudaExcel es un foro de consultas, no de formación.

La consulta inicial ha sido respondida, y por tanto cualquier otra consulta pasa por abrir un nuevo tema y volver a reformular la cuestión.

Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    4    1

  • Crear macros Excel

  • Mensajes

    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
    • @JSDJSDCon gusto mi estimado Para la opción 1: Sub Surtirhastadondealcanse() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 4 Dim filaFin As Integer: filaFin = 7 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Else solicitudes(i) = 0 End If surtido(i) = "POR FALTA STOCK" Next i ' Surtir de acuerdo al inventario disponible For i = 1 To numClientes If solicitudes(i) > 0 Then If inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) ElseIf inventario > 0 Then surtido(i) = inventario totalSurtido = totalSurtido + inventario inventario = 0 Else surtido(i) = "POR FALTA STOCK" End If End If Next i ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = "POR FALTA STOCK" Then .Value = surtido(i) .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Para la opción 2:   Sub surtirenpartesiguales() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim filaInicio As Integer: filaInicio = 13 Dim filaFin As Integer: filaFin = 16 Dim colInventario As Integer: colInventario = 2 Dim colSolicitudesInicio As Integer: colSolicitudesInicio = 4 ' Columna C Dim colResultadoInicio As Integer: colResultadoInicio = 9 ' Columna I Dim colTotalSurtido As Integer: colTotalSurtido = 12 ' Columna L Dim colFinalInventario As Integer: colFinalInventario = 13 ' Columna M Dim numClientes As Integer: numClientes = 3 Dim fila As Integer, i As Integer For fila = filaInicio To filaFin Dim inventario As Double inventario = Val(ws.Cells(fila, colInventario).Value) Dim solicitudes(1 To 3) As Double Dim surtido(1 To 3) As Variant Dim totalSurtido As Double: totalSurtido = 0 Dim totalPedido As Double: totalPedido = 0 ' Leer solicitudes For i = 1 To numClientes If IsNumeric(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) Then solicitudes(i) = CDbl(ws.Cells(fila, colSolicitudesInicio + i - 1).Value) totalPedido = totalPedido + solicitudes(i) Else solicitudes(i) = 0 End If surtido(i) = 0 Next i ' Si hay suficiente inventario, surtir lo que el cliente pide If inventario >= totalPedido Then For i = 1 To numClientes If solicitudes(i) > 0 And inventario >= solicitudes(i) Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) End If Next i Else ' Reparto base igualitario Dim baseSurtido As Long baseSurtido = Int(inventario / numClientes) For i = 1 To numClientes If solicitudes(i) > 0 Then If solicitudes(i) <= baseSurtido Then surtido(i) = solicitudes(i) inventario = inventario - solicitudes(i) totalSurtido = totalSurtido + solicitudes(i) Else surtido(i) = baseSurtido inventario = inventario - baseSurtido totalSurtido = totalSurtido + baseSurtido End If End If Next i ' Repartir sobrante restante uno por uno, respetando lo pedido Do While inventario > 0 For i = 1 To numClientes If surtido(i) < solicitudes(i) Then surtido(i) = surtido(i) + 1 totalSurtido = totalSurtido + 1 inventario = inventario - 1 If inventario = 0 Then Exit For End If Next i Loop End If ' Escribir resultados en las columnas correspondientes para cada cliente For i = 1 To numClientes With ws.Cells(fila, colResultadoInicio + i - 1) If surtido(i) = 0 Then .Value = "POR FALTA STOCK" .Font.Color = vbRed Else .Value = surtido(i) .Font.Color = vbBlack End If End With Next i ' Escribir total surtido y existencia final ws.Cells(fila, colTotalSurtido).Value = totalSurtido ws.Cells(fila, colFinalInventario).Value = inventario Next fila MsgBox "Resultado surtido cargado con éxito...", vbInformation End Sub Saludos, Diego
    • Buenos dias.  Estoy trabajando en una hoja para poder llevar un control de un pequeño almacén.  Tengo un pedido con varias líneas y "lotes" y necesito sacar las ubicaciones que coincidan con la referencia y lote que pone en el pedido. El problema viene cuando tengo la misma referencia y mismo lote en ubicaciones diferentes y necesito sacar la información en columnas diferentes. No se si  me he explicado bien, pero creo que con el ejemplo adjunto se entiende mejor. Agradecería mucho si me pudieran ayudar  Libro1.xlsx
    • Exelente solución mil gracias 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.