Saltar al contenido

Israel Cassales

Miembro
  • Contador de contenido

    1366
  • Unido

  • Última visita

  • Días con premio

    70
  • País

    México

Todo se publica por Israel Cassales

  1. Para replicar los QR, necesitarás agregar una lógica adicional para copiar las imágenes así que podrías necesitar trabajar con los objetos Picture o Shape. Te comparto una modificación de tu código que incluye la copia de los QR. Importante: Toma en cuenta estoy asumiendo que los códigos QR están la columna K, y no en todas las celdas. Recuerda la importancia que la hoja destino tiene el mismo diseño que el origen. Private Sub Workbook_Open() ' Declara variables Dim wbOrigen As Workbook Dim wsOrigen As Worksheet Dim wbDestino As Workbook Dim wsDestino As Worksheet Dim strMacroName As String Dim i As Long ' Abre el libro origen Set wbOrigen = Workbooks.Open("C:\Temp\Origen1.xlsm") ' Selecciona la hoja origen Set wsOrigen = wbOrigen.Worksheets("Almacen_RT") ' Abre el libro destino Set wbDestino = Workbooks.Open("C:\Temp\Destino1mismaextension.xlsx") ' Selecciona la hoja destino Set wsDestino = wbDestino.Worksheets("Almacen_RT") ' Pide al usuario el nombre de la macro strMacroName = "Mover datos" ' Copia los cambios a la hoja de destino wsDestino.Range("A2").Resize(wsOrigen.Range("A2:N425").Rows.Count, wsOrigen.Range("A2:N425").Columns.Count).Value = wsOrigen.Range("A2:N425").Value ' Copia los códigos QR de la columna K (solo si la celda no está vacía) For i = 2 To 425 ' Ajusta el rango según tus necesidades If Not IsEmpty(wsOrigen.Cells(i, 11).Value) Then ' Copia el contenido de la celda con el código QR wsDestino.Cells(i, 11).Value = wsOrigen.Cells(i, 11).Value End If Next i ' Guarda los cambios automáticamente If Not wbDestino.Saved Then wbDestino.Save End If ' Cierra el libro destino wbDestino.Close End Sub Es posible que debas personalizar. Saludines
  2. Hola, no me lo tome a mal, pero recuerde que en el foro son personas intentando ayudar personas. Tiene que considerar que NO HAY un conocimiento absoluto en todos los temas, ni una respuesta exclusiva acertada, además los tiempos de respuesta dependen en gran medida de la disponibilidad de los miembros o Maestros. Ahora mismo ha pasado un Maestro a visitar su tema. Del maestro @Victor7 he visto sus aportaciones y es bueno en verdad, por lo que debería tomar en cuenta sus recomendaciones. Si le piden un libro de ejemplo, haga lo posible por mandar un libro de ejemplo, sin él quedan abiertas las ambigüedades. Sino al final solo quedan como indicaciones que uno puede suponer que le deben servir, por ejemplo así como esta su tema y buscar valores en un rango específico con un paso de 0.01 ¿qué podría hacer? Configure las restricciones: La celda cambiante, Ingresa la referencia a K2. Selecciona ">= " e ingresa el valor mínimo del rango deseado (1) Luego, vuelve a añadir la segunda restricción, selecciona "<= " e ingresa el valor máximo del rango deseado (10) Configurar incremento en el valor de K2: Cambia la variable de la celda", marca la casilla "Reducir/Incrementar valores cambiantes de celda" Configurar el paso de búsqueda: En "opciones" establece la "Tolerancia de Restricción" en (0.01) para que se exploren todas las soluciones dentro del rango especificado. Ejecutar el Solver Usted podría decir que uno puede hacer el libro, sólo son dos celdas, K2 y K5, pero tome en cuenta que la idea de lo que busca parte de usted y no de quienes en buena voluntad le intentan ayudar. Saludos cordiales
  3. Hola, de acuerdo a su experiencia en Excel su tema sería laborioso, complicado o sencillo. En resumen al ser un Texto, hay que rearmar el contenido para obtener el valor del mes, día, año, hora, etc. En este momento ando en mi portátil donde traigo el 2013, veo que tiene el 2019 así que aunque es un "ensamblado" amplio debería poder simular el resultado, algo así: Si solo le interesa la fecha podría hacer esto: =FECHA(EXTRAE(A1,8,4),COINCIDIR(EXTRAE(A1,1,3),{"Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"},0),VALOR(EXTRAE(A1,5,2))) Si le interesa con hora: =FECHA(EXTRAE(A1,8,4), COINCIDIR(EXTRAE(A1,1,3),{"Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"},0), VALOR(EXTRAE(A1,5,2))) + (HORA(SI(DERECHA(A1,2)="PM", EXTRAE(A1,14,LARGO(A1)-15), EXTRAE(A1,14,LARGO(A1)-14)))+VALOR(EXTRAE(A1,16,2))/60)/24 En esta fórmula en particular no consideré el AM/PM en una sola, sería que haga unos ejercicios usted y nos comparta cómo le fue. No traigo el 365, pero más o menos una opción podría ser así: =LET( fecha, FECHA(EXTRAE(A1,8,4), COINCIDIR(EXTRAE(A1,1,3),{"Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"},0), VALOR(EXTRAE(A1,5,2))), hora, HORA(SI(O(EXTRAE(A1,15,2)="AM", EXTRAE(A1,15,2)="A"), EXTRAE(A1,14,LARGO(A1)-15), EXTRAE(A1,14,LARGO(A1)-14))), minutos, VALOR(EXTRAE(A1,16,2))/60, fecha + (hora + minutos)/24 ) ejemplo.xlsx
  4. Entiendo. El punto sobre el que tienes tomar una decisión es cuál es el mandante entre las indicaciones. Espero darme a explicar, Facturación escribe Peco y Número de factura, literal llena ese campo en base a los datos que se le devuelven con fórmula de la hoja producción. Es decir; que si se pone una fórmula en esas celdas el usuario las va a borrar. Luego producción si encuentra un consecutivo entre filas, en lugar de ordenar la tabla le inserta una fila, pero necesita ver los datos que le puso Facturación, pero con esta idea ya no los ve porque los cambia de lugar. Esos movimientos que hacen los usuarios y no sé si sean personas distintas mueven las referencias. Entonces lo que tienes dinámico te lo mueven, y luego algo fijo se requiere volver dinámico. Alguna de las dos tendrá que adaptarse, esa es la decisión... Sobre el diseño ¿Son dos hojas en un mismo libro para facilitar el tema aquí en el foro? ¿Son dos o más personas las que trabajan sobre el libro? ¿Facturación puede estar en desorden en los CC? ¿Producción podría llenar el registro siguiente en la fila que sigue y por orden usar el ordenar nativo de Excel?
  5. Sub CambiarValores() Dim celda As Range For Each celda In ThisWorkbook.Sheets("Hoja1").Range("A2:A30") If celda.Value = 0 Then celda.Value = 1 ElseIf celda.Value = 1 Then celda.Value = 0 End If Next celda End Sub En base a lo explicado un código como el anterior debería servir. Ejemplo.xlsb
  6. No entendí muy bien, creo lo que esta pasando es que esos datos {Peco, Factura, Detalles...} son escritura libre y no el resultado de una fórmula como lo son los folios que se arman más el ordenamiento, entonces hay que definir qué datos son fijos y cuáles hay que devolver. Si insertas una fila hay que tener cuidado con recorrer las fórmulas. Puedo ayudarte pero debes tener bien identificado la secuencia de los datos, es decir; origen y destino porque sino, avanzamos un paso pero retrocedemos dos. ¿Cómo logras lo anterior? Empieza por el diseño, por los datos que estás manejando tal vez te convenga una sola hoja y no dos, discriminas factura de producción con columnas y optimizas las fórmulas. Porque eso de estar insertando filas para acomodar no es una buena práctica para el fin que se está buscando, lo mejor es usar una sola hoja como base de datos con todo lo que debe contener y después para informes, resúmenes, etc. ya le agregas otra hoja. Si es indispensable el diseño como está, entonces tienes que decidir qué pasa con los valores fijos mencionados porque éstos no se mueven de forma dinámica, porque en origen son de escritura. Con gusto (si lo sé, verdad) te ayudo a formular. Por otro lado, si consideras un diseño nuevo también puedo acompañarte en el proceso.
  7. Pues que bueno que hayas resuelto tu consulta, con esto concluyo mi participación en el tema. Saludines.
  8. ¿Copiaste y pegaste la fórmula a otro libro?
  9. Me acabo de dar cuenta que tienes la versión 2019, y tu consulta se resuelve de manera general con BUSCARX() pero creo no la tienes disponible en esa versión. Así que en ese caso te ayudaré un poco más "emulando" la función sin necesitar las otras. En el adjunto se resolvería lo que necesitas porque veo que en la hoja HBO en D:D ya tienes el texto separado y salvo algunos guiones o comas que sobran en dos que tres títulos, igualándolos se acomodan. lista looney.xlsb
  10. Me da gusto haberlo entendido bien, en ese caso es muy probable que puedas llegar al resultado con las funciones que te propuse. Como te decía, haz un intento leyendo sus argumentos y nos compartes el resultado que vayas obteniendo, cuando tengas dificultades puedes replicarlas por acá e intentaré ayudarte a resolver las dudas. También es posible que mientras haces el intento, algún miembro adicional o alguno de los Maestros del foro te pase la fórmula ya hecha, si fuera el caso analiza paso a paso como pudiera estar estructurada.
  11. Bueno, lo que te puedo recomendar es formular algunas funciones que por sí mismas no te devolverían el resultado. Por ejemplo en la hoja HBO en C1, estarías buscando lo que tienes en A1: Looney Tunes_S01E01_Smile, Darn Ya, Smile!_track3, pero ese texto como tal no existe en la hoja GENERAL, más bien lo encuentras así "Smile, Darn Ya, Smile!" y necesitas el valor que esta en la celda de su izquierda, en este caso 1931. Ese 1931 es lo que buscas devolver a C1 en la hoja HBO, ¿cierto? Te recomiendo usar en conjunto EXTRAE() BUSCARX() Y es posible que necesites ENCONTRAR() Fui a tu presentación para poder ver un poco sobre tu experiencia en Excel, pero no encontré información que pudiera servir para poder dirigirme a ti en conceptos, términos o ejemplos. En tal caso, te invito a que intentes anidar las fórmulas propuestas y nos compartas tus logros o dificultades para precisar mejor una respuesta o ayuda. Saludines
  12. Entiendo. Salvo lo que algún miembro adicional o Maestro del foro puedan aportar sigo considerando lo mismo, que en la hoja producción no hay que insertar o eliminar ninguna fila cuando se repita algún centro de costo, sino mejor que la función ORDENAR() lo haga por ti en la hoja facturación. Lo que modifique un poco fue el folio para volverlo "único" contando las veces que se pueda escribir y después usarlo con el BUSCARV(), por lo demás si la idea te convence se puede quedar igual a como te he venido proponiendo. Saludines. Ayuda Excel.xlsx
  13. Bueno, tenemos una 4ta variante en tu consulta. Este inconveniente me parece que la forma sencilla de resolverlo sería que entonces el BUSCARV() sea sobre los registros en el centro de costos, es decir; en la hoja de producción los vas anotando según los eventos y en la hoja de facturación que se vayan ordenando. Entonces... La primer recomendación de la columna de folio no la necesitas, la reemplazaras por la de CC En la hoja de facturación usarás la función ORDENAR() Las demás fórmulas te deberían servir igual. Haz un intento, te dejo los argumentos de la función ORDENAR(), verás que cumplirá con esto que necesitas. Una vez que lo realices si te es posible, comparte aquí tus avances o dificultades.
  14. También puedes usar un BUSCARV() =SI.ERROR(SI(BUSCARV($A3,Facturación!$A$2:$H$13,6,FALSO)<>"","SI","NO"),"") Como te comentaba, un CONTAR() en producción =CONTAR(I3:T3) Y en facturación otro BUSCARV() =SI.ERROR(SI(BUSCARV(A2,Producción!$A$3:$X$16,24,FALSO)=12,"OK","NOK"),"") Con eso deberías poder cumplir con las expectativas de la consulta. ¡Saludines! Control_Produccion_Facturacion_v2.xlsx
  15. Recomendación: Si secciona sus consultas en base a sus avances es probable que la ayuda sea más precisa, evita ambigüedades y es factible que participen más miembros del foro o algún Maestro.
  16. Para la tercera: Me parece que si las columnas no cambian, puedes usar CONTAR() o alguna de sus variantes para validar cuando las celdas estén llenas y de ser así con la función SI() le regresas a la fila que corresponda en la hoja de facturación un texto en la última fila con algún "OK" o algo así. Saludines.
  17. Lo anterior podría resolver la primera parte de la consulta. Ahora sobre la segunda: En el libro no encontré algún ejemplo de cómo necesitas eso, podrías mostrarlo. Sí la idea ahí está, mencionas una alerta ¿pero una alerta cómo? En una celda, un mensaje, algo en VBA, un color en la misma fila de la hoja producción... y un largo etcétera que podría uno pensar.
  18. Control_Produccion_Facturacion.xlsx
  19. Bueno, si estas dispuesto a crear una columna en ambas hojas no sería muy complicado. Una columna que anteceda los datos en ambos rangos que se llame tal vez, folio o registro debería bastar. Posteriormente, con un BUSCARV() traes los datos de una hoja a otra. Si quieres controlar errores y eso, podrías anteponer SI.ERROR() y decides qué hacer si no encuentra nada o está en blanco. ¡Ah! y Deberías considerar evitar duplicados, además la numeración de esos folios también podría ser automática, una forma de hacerlo sería usar el número de FILA()
  20. Según lo que sé hasta ahora, las macros de Excel solo funcionan en las aplicaciones de escritorio, es decir, Excel para Windows o para Mac. Las versiones de tablet para Excel en Android o iPad no ejecutan VBA. Bajo esa idea, necesitarías una tablet basada en Windows que pueda ejecutar la versión de escritorio. Un ejemplo de esto según Google, sería la Microsoft Surface Pro. Aunque, te recomendaría que verifiques las especificaciones técnicas de cualquier tablet para asegurarte de que pueda soportar la versión de escritorio de Excel.
  21. ¡2003! No tengo forma de hacer pruebas en lo que voy a recomendar por lo que será en base a lo que recuerdo. Veo un problema con la parte de la fórmula que verifica si B17 es igual a 0. En Excel, los números y las cadenas de texto son diferentes, por lo que debes asegurarte de que estás comparando el tipo correcto de datos. Si B17 es un número, entonces la comparación debería ser B17=0 en lugar de B17="0". Recuerdo que había límites en la cantidad de condicionales que puedes anidar en una fórmula. Si mal no recuerdo eran 7 y tú tienes 8. SI(J17="< 0,007";"NE";...) SI(B17=0;"--";...) SI(F8>=F22;E22;...) SI(Y(F8>=F21;F8<=G21);E21;...) SI(Y(F8>=F20;F8<=G20);E20;"") SI(Y(F8>=F19;F8<=G19);E19;...) SI(Y(F8>=F18;F8<=G18);E18;...) SI(Y(F8>=F17;F8<=G17);E17;...) Por lo tanto, necesitarás reestructurar tu fórmula para que se ajuste al límite de 7 funciones
  22. Nota: La validación de datos no evita que se pueda copiar o pegar sobre la celda en cuestión, no se puede comparar con la protección que puede dar la hoja de forma nativa o una sentencia VBA.
  23. Para el lado contrario solo cambia B, por C OPCION DE UNA U OTRA.xlsx
  24. Modifica tu formula en la validación de datos como lo tenías pensado pero con algo como esto: =SI(B1="X", FALSO, VERDADERO) Aunque en lugar de lista, usa la opción personalizada.
  25. Sí, es una mejor opción considerando que se actualizará de la forma que usted busca. Recuerde que dependerá de su estructura en los libros de origen.
×
×
  • 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.