EXCEL - Rangos anidados para referencias

0

gracias por leer mi pregunta.

Estoy tratando de encontrar puntos de precio para varios tamaños de paquetes de productos. Tengo un rango de datos en la Hoja 1, A1: Z102, con la fila superior como masa de los paquetes (B1: Z1), y la primera columna (A2: A102) como el precio de venta. En la matriz he calculado los márgenes de beneficio (B2: Z102)

Estoy tratando de configurar "qué pasaría si" automáticamente en una hoja que me permite ingresar varios pesos "Hoja2! B1: B10", que seleccionará la columna correspondiente de pesos de paquete de "Hoja1! A2: Z2", luego haga que la función COINCIDIR con la fila más cercana de esa columna a mi "qué pasaría si" margen de beneficio "Hoja2! A1", y finalmente devolver en Hoja2, C1: C10, el precio de venta más cercano a ese margen de ganancia.

SHEET1
       1lbs    2lbs    3lbs    4lbs
$1     $0.10  -$0.80  -$1.80% -$2.80
$2     $1.74   $0.74  -$0.26  -$1.26
$3     $2.61   $1.61   $0.61  -$0.39
$4     ...     ...     ...     $0.47
...

SHEET2
$0.20  2lbs    X
       4lbs    X

[Editar1] Entonces la función devolvería C1 = $ 2, y C2 = $ 4 en tres pasos iterativos (creo).

  1. Cell.Sheet2! B1.Value coincide con una columna idéntica en Sheet1 Row1: Devuelve la columna Y
  2. Para la Columna Y en la Hoja1, encuentre el valor más cercano al valor positivo de la Celda. Hoja2A1: Devuelve la Columna Y, Fila Z
  3. Para la Hoja1 Columna Y, el valor de retorno de la Fila Z en la Hoja 1 Columna 1, Fila Z. repita ese valor en la Hoja2 C1
  4. Repita 1-3 para B2 ... Bn

Me está costando mucho resolver cada paso:

  1. MATCH puede identificar la columna correcta
  2. No puedo encontrar la forma de anidar MATCH en "OFFSET" para buscar solo en la columna Y. He intentado INDEX MATCH, INDEX MATCH MATCH, LOOKUPs (V&H).
  3. Devuelve el valor Column1 en RowZ.

Me estoy dando cuenta de que esta podría ser una solución Macro, pero simplemente no sé cómo VBA:

Dim profit, lbs, cost, reflbs, refprofit As Range

Set cost = Worksheets("Sheet1").Range("$A$2", "$A$5")
Set profit = Worksheets("Sheet1").Range("$B$2", "$E$5")
Set lbs = Worksheets("Sheet1").Range("$B$1", "$E$1")
Set reflbs = Worksheets("Sheet2").Range("$B1")
Set refprofit = Worksheets("zTest").Range("$H$39")

For Each profitCell In profit
    For Each costCell In cost
        For Each lbsCell In lbs
            If lbsCell.Value = reflbsCell.Value Then

Entonces no estoy seguro de cómo dirigir una búsqueda en la columna cuyo encabezado lb coincide con "reflbs", y luego puse un:

If profitCell.Value = refprofitCell.Value Then

Luego devuelve la fila Z para el partido, ¡y finalmente devuelve la fila Z, columna A, hoja1! en la Hoja2! C1.

¡Gracias un montón!

Ytreyu
fuente
Parece que tienes una buena idea de lo que hay que hacer. ¿Puede decirnos qué fórmula ha probado hasta ahora y cómo no puede alcanzar el resultado esperado?
cybernetic.nomad
Gracias por responderme también. Tengo una tabla experimental con H38 como el peso deseado de la bolsa (6 libras, número con formato personalizado, por lo que la celda solo tiene 6, es decir, "$" 0.00 si dólares, o 0.0 "libras" si peso). Primero tengo una función para encontrar el número de columna relativo del peso correspondiente: = MATCH (H38, G40: M40) que devuelve "7". He intentado LOOKUP (y H&V LOOKUP) dándome cuenta de que necesita una lista ascendente. También probé INDEX MATCH e INDEX MATCH MATCH. MI último intento fue DESPLAZAMIENTO, desde "A1" y desde una DIRECCIÓN, estableciendo las columnas de desplazamiento en "7" encontradas antes de -1 para llegar a la columna "A".
YAtreyu

Respuestas:

0

Suponiendo que sus datos de origen se presentan como su ejemplo de la siguiente manera:

ingrese la descripción de la imagen aquí

Luego, en la hoja 2, si sus datos se presentan de la siguiente manera:

ingrese la descripción de la imagen aquí

Luego puede usar la siguiente fórmula para obtener los números en rojo:

=INDEX(Sheet1!$B$2:$E$5,IFERROR(MATCH(Sheet2!$A$1,Sheet1!$A$2:$A$5,1),1),MATCH(Sheet2!$B1,Sheet1!$B$1:$E$1,0))

ingrese la descripción de la imagen aquí

Cuando el valor en dólares que está buscando es menor que el primer valor en su columna, es probable que haya recibido un error. La forma en que vlookup y match funciona es que no buscan el valor numérico más cercano. Buscan el último número que fue menos de lo que estaban buscando. Esa es la razón por la cual su columna necesita ser ordenada en orden ascendente. Para tratar con un valor legítimo que es menor que el primer valor en la lista, la función de coincidencia que arrojará el error se envuelve en una función iferror que devuelve 1 para representar la primera fila. Tenga en cuenta que si se ingresa una entrada no válida para el precio en la hoja2! A1, aún devolverá 1 para la primera fila.

Para sus pesos, en realidad son valores de cadena más probables y no números. Es bastante común tener sus unidades listadas en una celda separada y luego solo el valor en una celda propia para facilitar el trabajo con los valores. En este caso, supuse que su peso siempre coincidiría exactamente con uno de sus encabezados de columna. un peso de 2.5 libras arrojaría un error ya que no se encuentra en su lista de encabezados.

Adelante Ed
fuente
Hola, gracias por responderme. Intenté usar su fórmula y está funcionando exactamente como usted sugirió. ¡Necesito que haga un paso más, que es cuando la fórmula "encuentra" C2 en la Hoja1! para informar el valor en Sheet1! Columna A para la misma fila, es decir, informar el precio ideal del paquete, versus el beneficio del precio del paquete de ese tamaño.
YAtreyu
Entonces, en lugar de $ 0.80, ¿quieres que devuelva $ 1?
Adelante Ed
¡Sip! Es buscar las libras que configuré para que coincidan con la columna para un peso, luego buscar en esa columna el beneficio que configuré, luego para que coincida con la fila en la que está la ganancia y devolver el precio para establecer el producto.
YAtreyu
Entonces, $ 0.80 está a $ 1 de distancia de $ 0.20, y $ 0.74 está a solo $ .54 de distancia. ¿Cuál es el valor esperado para X a 2 lb y 4 lb que desea ver? Todavía estoy tratando de entender qué fila estás tratando de elegir y por qué.
Delantero Ed