Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Máximos colaboradores

Popular Content

Showing content with the highest reputation since 12/23/24 in all areas

  1. Al escribir fórmulas debemos evitar siempre que podamos anidar funciones SI (sobre todo cuando tenemos información que se repite). Por favor, prueba la siguiente fórmula: =SI.ERROR( LET( id, B3, fecha_ref, F3, rango_ids, '[Base Snte 05 Coah 2.xlsx]Pagos'!$F$2:$F$10000, rango_fechas, '[Base Snte 05 Coah 2.xlsx]Pagos'!$K$2:$K$10000, rango_resultado, '[Base Snte 05 Coah 2.xlsx]Pagos'!$D$2:$D$10000, diferencia, ABS(rango_fechas - fecha_ref), filtro, (rango_ids = id) * diferencia, min_dif, MIN.SI.CONJUNTO(diferencia, rango_ids, id), fila, COINCIDIR(min_dif, filtro, 0), INDICE(rango_resultado, fila) ), "No encontrado")Coméntanos si funciona.
  2. Israel, gracias por la parte que me toca. He tratado de darle un aire más moderno. Desde 2016 no he hecho un cambio tan grande. Nos vemos!
  3. Antes que nada ¡Muy bonito el foro con el cambio! El Maestro tiene buenos argumentos al pedirle más información, porque con los datos que expone usted sólo se puede aportar alguna idea sencilla: Puede usar las funciones en una fórmula de matriz INDICE y COINCIDIR junto con la lógica de un rango. Como usted tiene 365 no necesita los corchetes, aunque puede afectar el rendimiento dependiendo de la cantidad de los datos porque está relacionando columnas completas. =INDICE(DatosOrigen!A:A, COINCIDIR(VERDADERO, (DatosOrigen!B:B >= MisDatos!B2*0.9)*(DatosOrigen!B:B <= MisDatos!B2*1.1), 0)) Imagine: En su hoja "DatosOrigen", la columna de Folios es la A y la columna de Importes es la B. En su hoja "MisDatos", el Importe aproximado que tienes es la celda B2 (y quieres que el folio aparezca en A2). Importante si es que hay Múltiples Coincidencias: La fórmula traerá el primer folio que encuentre que cumpla con el criterio. Si hay varios importes dentro de su margen de tolerancia, solo devolverá el folio asociado al primero que aparezca en su lista de "DatosOrigen". Adicionalmente le funcionaría mejor Power Query
  4. ¡Saludos, @Matías86 ! Prueba en F4 con la siguiente fórmula: =SUMA((0&C2:C199)*BUSCARV(B2:B199;E10:H11;COINCIDIRX(AÑO(C1);E9:H9);)*(AÑO(A2:A199)=AÑO(C1))) ¡Bendiciones!
  5. Que tal, una posible solución: =BUSCARX(A5,A1:A3,C1:C3,"Fuera de rango",-1) Espero le sea útil. Horas (solucion).xlsx
  6. Hola @ROVER1965 Te adjunto dos tipos de soluciones, la primera es celda por celda con la funcion SUMAR.SI.CONJUNTO y la segunda es una sola formula de Excel 365. Ya nos comentaras. CONSULTA SOBRE FORMULAS EXCEL.xlsx
  7. Con el tiempo transcurrido, falta de seguimiento o falta tiempo de tiempo del autor, termino mi participación en el tema. Saludines
  8. (parece que) ya pasaste de nuevo por tu consulta, asi que, en tanto te decides a soltar mas detales... como tus datos fueron insuficientes... analiza la muestra del adjunto (m365) 1) en las columnas A,B y C los datos donde buscar los valores (si estan en otro libro, cambia las referencias en la primera matriz en las columnas E,F y G) 2) en [E1] indicas el importe a buscar y en [E2] el '%' de tolerancia (+/-), los encontrados se derraman en la matriz [E4#] 3) en [I1] puedes elegir el monto filtrado que consideres mas apropiado (lista tomada de [E4#]), [I2] indica si hay mas de uno 4) en la segunda matriz [I5#] se listan los (RE)filtrados (OJO: que pudiera haber todavia mas de uno) 5) si hubiera mas de uno, la celda [M2] es para elegir de cual de ellos se rescatan los datos (mostrado en [M5]) puede ser que sobren pasos, filtros, etc, pero la falta de detalles es terreno fertil para una imaginacion generosa selecciona tolerancia en lista (ayudaExcel).xlsx
  9. para agilizar propuestas, te sugiero que proveas estos datos en tu siguiente mensaje: 1) el importe que 'ya tienes' (al que refieres en tu formula) 2) la celda donde necesitas el resultado (y la formula exacta con que lo intentas) 3) una imagen (reducida) de los datos en 'el otro libro' (rangos, arreglo, tipo de datos, ...) 4) el resultado que esperas como correcto (y donde se ubica en la imagen que adjuntes)
  10. Abre el adjunto y pulsa sobre el botón. Vale para cualquier cantidad de filas y columnas de Sheet1. copiar color.xlsm
  11. Hola, tal cual se plantea, solamente con macros (VBA); en todo caso, hacerlo a mano o con "CTRL + ;". Saludos.
  12. Bueno con el ejemplo así como lo tienes, te puedo compartir que ese error de referencia circular es el que te ayuda a mantener la fecha y la hora "congeladas" podrías evitarlo usando una columna auxiliar para el vacío pero la fórmula AHORA() te cambiara el resultado cada que la hoja se calcule o cuando le des guardar. Sin VBA de por medio será esperar el aporte de algún maestro o usuario avanzado. Si cambias de opinión pasa el tema para la otra sección. Saludos
  13. Para esa versión se me ocurre usar otra web y una UDF: Function InsertQRCode(celda As Range) As String Dim mirango As Range Dim QRCodeURL As String Set mirango = Application.Caller QRCodeURL = "https://quickchart.io/qr?text=" & celda.Value With ActiveSheet.Pictures.Insert(QRCodeURL) .Left = mirango.Left .Top = mirango.Top .Width = mirango.Width .Height = mirango.Height End With InsertQRCode = "" End Function
  14. Hola Ruben Solo deberías escribir esto. Esa línea hace que si el nombre del libro donde está la macro (thisworkbook) es diferente al nombre del libro donde se encuentra el usuario (libro activo = Activeworkbook)
  15. Hola a todos Quería felicitar públicamente a @Sergio por el nuevo diseño del foro, realmente se ve mucho más moderno. Espero que logremos hacer que el foro vuelva a ser tan grande como antaño.
  16. Vale, vale, he visto la luz! Tengo formato condicional que el otro día no vi. Lo miré y no lo vi. Ni te molestes Abraham Valencia. Mil gracias a los dos
  17. Hola Maku. Yo creo que tu archivo ya cumple lo que quieres! Entiendo que querías una herencia... El primer cuadro lo coloreaste a mano y el segundo ha heredado eso, por lo que está esperando que lo colorees a mano también 😁 Fuera de bromas... Una opción sería que lo hagas con formato condicional y otra opción sería que lo hagas con macros, depende por cuál te inclines y si hay limitaciones en el entorno donde piensas ejecutarlo. Los archivos de macros tienen algunas limitaciones a nivel empresarial por las restricciones impuestas, por temas de seguridad, que impiden su ejecución. Ya nos comentas para poder ayudarte con algo
  18. 1 point
    • 8 downloads
    • Version 1.0.0
    Selecciona año, mes y día para agendar. Selecciona alguna cita y mostrara los botones de Modificar o Eliminar Selecciona alguna cita y podrás cambiar su status dando clic en el color de la parte inferior Filtrar: Puedes filtrar las citas por cualquier palabra o nombre para localizarlas con facilidad. Al abrir la Agenda ocultara los exceles y al terminar los volverá a mostrar. Espero les sea de utilidad
  19. hay una alternativa mas 'barata' (usando si'es logicos) asumiendo la entrada de horas en [A7] =(a7>=5)+(a7>=13)+(a7>=21) pros: - no usa funciones (rendimiento optimo) - funciona en cualquier version de excel cons: - le ves alguna contra ?
  20. Que tal a todos, me permito proponer esta posible solución: =SI.ERROR(BUSCARX(B2&C2,Produccion!B$2:B$5&ENTERO(Produccion!E$2:E$5),Produccion!C$2:C$5,0)+SI.ND(BUSCAR(2,1/(B$1:B1=B2),J$1:J1),)-E2,) Espero le sea útil. Saldo dinamico (Solucion).xlsx
  21. Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
  22. Hola, El texto citado no lo termine de entender, la celda adyacente a Z27 se relaciona con la fila A28 de la hoja VTL1 y el resultado 35 de su ejemplo, se obtiene de la fila 8, así que para hacer algo sin complicaciones use la columna BM para devolver ese valor. Aprovechando los parámetros de discriminación que uso usted para pintar las celdas de la fila, podría usar esos mismos en una fila auxiliar y así obtener un valor que podría usar como criterio en alguna función, sin tener que meterse al terreno de los colores del condicional, porque no son los mismos que los de la paleta de colores en cuestiones de código. ¿Entonces una solución con macros no es de su interés? Si cambia de opinión podría colocar el tema en esa sección, querer formular con los colores del formato condicional tiene sus características específicas, sin mencionar que se actualice "sola". Aunque bueno, todavía es posible que algún maestro o usuario avanzado le pase una solución con alguna función personalizada al ver que usted tiene 365. Si le interesa una idea sencilla podría usar un rango en la fila 5: =SI.ERROR(COINCIDIR(K7,CALCULOS!$B$4:$B$35,0),SI(O(DIASEM(K7)=7,DIASEM(K7)=1),1,0)) Eso le daría la opción de usar: =SUMAR.SI($K$5:$AY$5,">=1",K8:AY8) Saludines
  23. Muchas gracias por tu respuesta Abraham. Saludos!
  24. Hola, el ícono de Excel es cuando vinculas los datos de Excel, tipo tablas es cuando importas.
  25. Tal y como tienes tu código hace lo siguiente, que es lo que necesitas?
  26. Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Asegurarnos de que solo ajustamos las filas a partir de la fila 5 If Not Intersect(Target, Me.Rows("5:" & Me.Rows.Count)) Is Nothing Then Me.Rows("5:" & Me.Rows.Count).AutoFit End If End Sub
  27. ¡Hola! Después de un buen tiempo ausente... @Gabriela hg ya que veo que tienes Excel 365, te dejo mi solución para piezas y gramos. Extraer piezas - gramos 365_GP.xlsx
  28. Intenta con: =INDICE(G$3:AK$3,,CONTAR(G$3:AK$3))-SI.ERROR(BUSCAR(2,1/(G4:INDICE(G4:AK4,,CONTAR(G$3:AK$3))=0),G$3:AK$3),G$3-1)
  29. Una idea con VBA Private Sub Worksheet_Change(ByVal Target As Range) Dim ws As Worksheet Dim filterRange As Range Dim selectedValue As String Dim lastRow As Long Set ws = ThisWorkbook.Sheets("Hoja1") lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row Set filterRange = ws.Range("A4:D" & lastRow) If Not Intersect(Target, ws.Range("B2")) Is Nothing Then selectedValue = ws.Range("B2").Value filterRange.AutoFilter Field:=1, Criteria1:=selectedValue If selectedValue = "" Then filterRange.AutoFilter End If End If End Sub
  30. Que tal nuevamente, adjunto una solución alternativa: =MAX(A:.A)-BYROW(F4:.AK20,LAMBDA(r,BUSCAR(2,1/(r=0),F3:.AK3))) Cabe mencionar que esta solución requiere funciones nuevas como RECORTAR.RANGO. CONTADOR FINAL (Solucion).xlsb
  31. 'Opción 1 Sub FiltrarSKUPorFecha(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim diccionarioSKU As Object Dim listaEliminar As Object Dim fechaActual As String, fechaSiguiente As String Dim f As Variant With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Crear diccionarios para comparar SKU y almacenar filas a eliminar Set diccionarioSKU = CreateObject("Scripting.Dictionary") Set listaEliminar = CreateObject("Scripting.Dictionary") ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then diccionarioSKU.RemoveAll ' Limpiar el diccionario antes de llenarlo ' Guardar los SKU de la fecha siguiente (solo de la siguiente) For f = fila + 1 To ultimaFila If .Cells(f, 1).Value <> fechaSiguiente Then Exit For diccionarioSKU(.Cells(f, 2).Value) = 1 Next f ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Solo eliminar si el SKU no está en la fecha siguiente If Not diccionarioSKU.exists(.Cells(f, 2).Value) Then listaEliminar(f) = 1 ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar.keys .Rows(f).Delete Next End With MsgBox "Completado correctamente.", vbInformation End Sub 'Opción 2 Sub FiltrarSKUPorFecha1(): Application.ScreenUpdating = False Dim ultimaFila As Long, fila As Long Dim listaEliminar As Collection Dim fechaActual As String, fechaSiguiente As String Dim f As Variant, i As Long Dim SKUExiste As Boolean With Sheets("Consolidado") ultimaFila = .Cells(.Rows.Count, 1).End(xlUp).Row ' Inicializar la colección para marcar las filas a eliminar Set listaEliminar = New Collection ' Recorrer desde la primera fila hasta la penúltima For fila = 2 To ultimaFila - 1 fechaActual = .Cells(fila, 1).Value fechaSiguiente = .Cells(fila + 1, 1).Value ' Solo comparar la fecha actual con la siguiente (inmediatamente superior) If fechaActual <> fechaSiguiente Then ' Revisar los SKU de la fecha actual y marcar los que deben eliminarse For f = fila To 2 Step -1 If .Cells(f, 1).Value <> fechaActual Then Exit For ' Comprobar si el SKU está en la fecha siguiente SKUExiste = False For i = fila + 1 To ultimaFila If .Cells(i, 1).Value <> fechaSiguiente Then Exit For If .Cells(i, 2).Value = .Cells(f, 2).Value Then SKUExiste = True Exit For End If Next i ' Si el SKU no se encuentra en la fecha siguiente, marcar para eliminar If Not SKUExiste Then listaEliminar.Add f ' Marcar fila para eliminar después End If Next f ' Ya no es necesario seguir buscando después de comparar la primera y la siguiente fecha Exit For End If Next fila ' Eliminar las filas marcadas sin afectar el bucle principal For Each f In listaEliminar .Rows(f).Delete Next f End With MsgBox "Completado correctamente.", vbInformation End Sub TABLA ELIMINAR.xlsm
  32. Que tal, una posible solución podría ser: =M$1-BUSCAR(2, 1/(A2:M2=0), A$1:M$1) Espero le sea útil. DIAS CONSECUTIVOS (SOLUCION).xlsx
  33. Buenas, Te paso dos opciones que uso muchisimo. Eso si, para que funcionen, tienes que activar el calculo iterativo... foro.xlsx
  34. Buenas, Al final lo he arreglado guardando una copia del "export" en el odenador que lo ejecute. Como el informe lo ejecutara cada persona en su ordenador, y cada vez que lo utilice necesitara datos actualizados, el export lo guardo en la raiz de C:\ de cada ordenador y PQ hace la llamada a esa ruta. Da igual que en cada ordenador haya un export, porque el valido siempre será el que se cree en ese momento, con independencia de donde se haya creado. Me hubiera gustado poder guardarlo en sharepoint, mas que nada por tenerlo todo organizado, pero asi me vale; ademas la macro que genera el export, se encarga de guardarlo, cerrarlo y actualizar la plantilla para capturar con PQ. Saludos a todos.
  35. Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO. Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
  36. Hola a ambos, Varias opciones: En el ejemplo presentado, se observa que las posiciones abscisa/ordenada son las mismas en las tablas fuente y destino. Si va a ser así, bastaría con: =I3:L6 fórmula que, colocada en F26 devolvería los resultados. Otra forma abreviada podría ser: =BUSCARV(D26;H$3:L$6;{2\3\4\5};) fórmula que habría que insertar en F26, y copiarla verticalmente hasta F29 para obtener los mismos resultados. Pero eso sí: siempre que el orden de las columnas también sea el mismo que el de la tabla fuente. Y por último, ya que tienes Excel-365, también podrías emplear: =EXCLUIR(REDUCE(0;D26:D29;LAMBDA(a;b;APILARV(a;BUSCARV(b;H3:L6;{2\3\4\5};))));1) fórmula única, que introducida en F26, devolverá una matriz dinámica con todos los resultados. Si entre esto y la aportación de @Israel Cassales ya queda resuelta tu petición, perfecto. En el caso de que el problema pueda abarcar otras vertientes y exceder en complejidad (filas o columnas en posiciones diferentes, por ejemplo), mi recomendación es que subas otro archivo, pero esta vez con el escenario más difícil que pueda existir, para ver de aportar nuevas posibilidades de solución. Saludos a ambos,
  37. Te respondí en el otro lado. Saludos.
  38. Function InsertQRCode(celda As Range) As String Dim QRCodeURL As String On Error Resume Next ActiveSheet.Shapes("QR").Delete QRCodeURL = "https://quickchart.io/qr?text=" & celda.Value With ActiveSheet.Pictures.Insert(QRCodeURL) .Name = "QR" .Left = 500 .Top = 25 .Width = 300 .Height = 300 End With InsertQRCode = "" End Function Adáptalo a tus necesidades.
  39. el tema tiene su grado de complejidad por lo siguiente: 1) la propiedad que intentas (.interior.colorindex) no detecta formatos condicionales 2) la propiedad .displayformat (xl-2010+) no se puede usar (directamente) en UDF's llamadas desde celdas 3) por lo mismo es la 'vuelta de tuerca' por procedimiento 'auxiliar' y el metodo 'evaluate' finalmente, no me hables 'de usted', hablame de (us)TU 🫡
  40. 1 point
    Feliz año 2025 a los usuarios aún frecuentes del foro. Espero que en algún momento recuperemos el auge que alguna vez tuvo este foro.
  41. Hola. No hay forma de evitar que un archivo de Excel se abra en otros programas que sean compatibles; asimismo, las macros de VBA no pueden ser usadas en web, solo funcionan en Excel de escritorio. Tal cual lo planteas al parecer quieres un archivo conectado mediante internet para lo que no te será útil Excel.
  42. 1 point
    Un año más en este foro aprendiendo de los demás y tratando de aportar lo mejor posible, espero que se encuentren bien cada uno de los que participan en el foro, consultantes, miembros, maestros, moderadores, administradores... ¡bendiciones y buenos deseos! ¡Feliz Navidad 2024 y Año 2025! Saludines
  43. El archivo Propuesta25122024.xlsm

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.