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).
- Cell.Sheet2! B1.Value coincide con una columna idéntica en Sheet1 Row1: Devuelve la columna Y
- 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
- 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
- Repita 1-3 para B2 ... Bn
Me está costando mucho resolver cada paso:
- MATCH puede identificar la columna correcta
- 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).
- 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!
Respuestas:
Suponiendo que sus datos de origen se presentan como su ejemplo de la siguiente manera:
Luego, en la hoja 2, si sus datos se presentan de la siguiente manera:
Luego puede usar la siguiente fórmula para obtener los números en rojo:
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.
fuente