Saltar al contenido

Repetición en una fórmula


Recommended Posts

publicado

Tengo esta fórmula matricial en la que la orden se repite ocho veces: =SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(3;E$1:E$5;0)>0)*Hoja2!$B$1;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(4;E$1:E$5;0)>0)*Hoja2!$B$2;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(6;E$1:E$5;0)>0)*Hoja2!$B$3;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(9;E$1:E$5;0)>0)*Hoja2!$B$4;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(10;E$1:E$5;0)>0)*Hoja2!$B$5;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(11;E$1:E$5;0)>0)*Hoja2!$B$6;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(12;E$1:E$5;0)>0)*Hoja2!$B$7;0)+SI.ERROR((COINCIDIR(1;E$1:E$5;0)>0)*(COINCIDIR(15;E$1:E$5;0)>0)*Hoja2!$B$8;0)

pero la fórmula está incompleta, pues tengo que repetir hasta trescientas veces la misma órden, solo cambiando los números que tiene que buscar y la celda donde se encuentra el dato buscado para sumarlo, pero Excel solo me permite repetir hasta 103 veces la misma orden. ¿Cómo puedo solucionarlo?

publicado

1 16 4 11

3 22 15 36

15 34 69 56

48 56 102 77

62 77 116 84

Si en el rango A1:A6 están el 1 y el 3 sumar F6 F6= 4

Si en el rango A1:A6 están el 1 y el 4 sumar F7F7=10

Si en el rango A1:A6 están el 1 y el 6 sumar F8F8=7

Si en el rango A1:A6 están el 1 y el 10 sumar F9 9

Si en el rango A1:A6 están el 1 y el 20 sumar F11 7

Si en el rango A1:A6 están el 1 y el 22 sumar F12 5

Si en el rango A1:A6 están el 1 y el 30 sumar F13 9

publicado

Perdoname, no estaba correcta la fórmula matricial, ahora le he rectificado de forma que el resultado primero que corresponde a la casilla A7 tiene que ser la suma de las coincidencias 1-3 = 4 + 1-4=10 + 1-6=7 + 3-4=9 + 3-6=1 +3-10=4 + 3-35=3 + 4-10=5 que suman el total de la casilla A7=43 Espero que ahora lo entiendas mejor. Gracias por tu ayuda

Problema con fórmula matricial2.xls

publicado

Todo se refiere al estocaje de un almacén de elementos que se reciben desde otro país. Se almacenan en cajas de idénticas características, pero cada caja contiene dos elementos diferentes y compatibles. Ejemplo: Palancas de cambio y su bola o embellecedor/pomo. Pistones y segmentos... Se almacenan en estanterias de cinco niveles. Hay ciento noventa y siete líneas de estanterías y cada línea de estantería tiene ciento catorce columnas de cinco alturas cada una. Para poder controlar todo lo que se recibe y consume, hay que tener un cuadro hecho en el que se refleje la suma de empaquetados que hay en cada columna y saber en qué columna están colocados. Para determinar las parejas, se utiliza el sistema de numeración: 1-3 o 3-10 o 20-45... y cada pareja tiene un valor numérico: Por ejemplo 1-3=4 / 3-10=7... En la base de cada columna hay una pequeña pantalla que marca el total de las sumas de cada caja almacenada en esa columna: Ejemplo Si en la columna 1 hay una caja de 1-3 otra de 1-3 otra de 3-10 otra de 4-25 otra de 6-12 y 1-3=4/3-10=7/4-25=2/6-12=2 en la pantallita aparece 19. Las cajas se almacenan en las columnas aleatoriamente, pues lo hacen los carretilleros y las van colocando donde hay huecos vacíos. La suma en las pantallitas es automática por el peso de las cajas o por unas placas emisoras que llevan pegadas en el lateral. Para localizar la ubicación de las cajas de cada tipo, producción envía una orden determinada; esta orden la recibe almacén y la convierte en buscador por un sistema automático, pero que tiene la virtud de funcionar con las pantallitas de cada columna, indicándole a los robots de localización donde se encuentran las cajas pedidas por producción. Mi problema está en que el sistema de localización falla continuamente y necesito resolver el problema. Se me ha ocurrido hacerlo con una formula matricial en excel y parece que funciona, lo que pasa es que tengo que repetir tantas veces la fórmula tan enorme que he parido que no llegaré a terminar nunca. Necesito algún sistema que me haga completar todas las fórmulas con una macro, con otra fórmula o con lo que sea, ya que las parejas posibles son mas de quinientas y pueden estar almacenadas en cualquier columna de cualquier estantería. No me importa cuantas columnas hay, ni cuantas hileras de estanterías, pues son diferenciables por calles y este sistema sí funciona perfectamente.

publicado

Armando, lo siento pero no consigo que esto funcione, no porque esté incorrecto, sino porque no tengo los conocimientos necesarios. Gracias por tu tiempo y paciencia, pero voy a dejarlo. Un saludo

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
      187
    • Comentarios
      97
    • Revisiones
      29

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    2    1

  • Crear macros Excel

  • Mensajes

    • 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
    • Buenos días,  espero se encuentren bien de salud compañeros, Favor me podrían ayuda con lo siguientes como se podría hacer cuando tengo una tabla dinámica que  amedida que se aumente las columnas fechas con data un formula que se coloco al final busque o analice siempre la ultima fila y columna de la fecha. Coloco un ejemplo
    • @JSDJSD Excelentes, GRACIAS POR TU SOPORTE , me ayudo demasiado es exactamente lo que quería. 5 ESTRELLAS
    • '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
  • 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.