EXCEL - Вкладені діапазони для посилань


0

спасибі за читання мого запитання.

Я намагаюся знайти цінові очки для різних розмірів пакетів продуктів. У мене є діапазон даних на Sheet1, A1: Z102, причому верхній рядок є масою пакетів (B1: Z1), а перша колонка (A2: A102) як ціна продажу. У масиві я розрахував прибуток (B2: Z102)

Я намагаюся автоматично налаштувати "what-if" на аркуші, що дозволяє мені вводити різні ваги "Sheet2! B1: B10" - що вибере відповідний стовпець ваг пакету з "Sheet1! A2: Z2", потім мати функцію MATCH найближчий рядок цього стовпця до мого "що-якщо" маржинального прибутку "Sheet2! A1", і, нарешті, повернути на Sheet2, C1: C10, ціна продажу, яка є найбільш близькою до цього прибутку.

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

[Edit1] Отже, функція повертає C1 = $ 2, а C2 = 4 у трьох ітераційних кроках (я думаю).

  1. Значення збігається з ідентичним стовпцем у рядку Sheet1: Повертає стовпець Y
  2. Для стовпця Y в Sheet1 знайдіть значення найближчого позитивного значення для Cell.Sheet2A1: Повертає стовпець Y, рядок Z
  3. Для стовпця Y Sheet1, повертається значення Z рядка Z1 у стовпці 1 рядка Z. повторіть це значення в C1 Sheet2
  4. Повторіть 1-3 для B2 ... Bn

Мені важко вирішити кожен крок:

  1. MATCH може ідентифікувати правильний стовпець
  2. Не можу зрозуміти, як гніздо MATCH в "OFFSET" для пошуку тільки стовпця Y. Я пробував INDEX MATCH, INDEX MATCH MATCH, LOOKUPs (V & amp; H).
  3. Повертає значення стовпця1 у RowZ.

Я розумію, що це може бути рішення для макросів, але я просто не знаю, як 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

Тоді я не впевнений, як спрямувати пошук у стовпці, чий заголовок lbs збігається з "reflbs", а потім я вставлю:

If profitCell.Value = refprofitCell.Value Then

Потім поверніть рядок Z на матч, а потім поверніть Row Z, стовпець A Sheet1! у Sheet2! C1.

Спасибі!


Ви, здається, маєте гарне уявлення про те, що потрібно зробити. Чи можете ви повідомити нам, яку формулу ви пробували досі і як не вдалося досягти очікуваного результату?
cybernetic.nomad

Дякуємо, що повернулися до мене. Я маю експериментальну таблицю з H38 як бажану вагу мішка (6 фунтів, нестандартне форматований номер, так що клітина має тільки 6, тобто "$" 0.00 доларів, або 0.0 "фунтів", якщо вага). Спочатку у мене є функція пошуку відносного номера стовпця відповідного ваги: ​​= MATCH (H38, G40: M40), який повертає "7". Я спробував LOOKUP (і H & amp; V LOOKUP), розуміючи, що він потребує висхідного списку. Я також спробував INDEX MATCH і INDEX MATCH MATCH. Моя остання спроба була OFFSET, з "A1" і з ADDRESS, встановивши зміщення стовпців на "7", знайдених раніше, ніж -1, щоб дістатися до стовпця "A".
YAtreyu

Відповіді:


0

Припускаючи, що ваші вихідні дані викладені так само, як ваш приклад:

enter image description here

Потім на аркуші2, якщо ваші дані викладені наступним чином:

enter image description here

Тоді ви можете скористатися такою формулою, щоб отримати цифри червоним кольором:

=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))

enter image description here

Коли вартість долара, яку ви шукаєте, менше першого значення у вашому стовпці, ви, ймовірно, отримали помилку. Спосіб vlookup і робота збігу полягає в тому, що вони не шукають найближчого значення числа. Вони шукають останнє число, яке було менше, ніж те, що вони шукали. Саме тому ваша колонка повинна бути відсортована в порядку зростання. Для того, щоб мати справу з легітимним значенням, меншим, ніж перше значення у списку, функція збігу, яка викине помилку, завершується функцією iferror, яка повертає 1 для представлення першого рядка. Зверніть увагу, що якщо в аркуші2! A1 введений неприпустимий запис для ціни, він буде повертатися 1 для першого рядка.

Для вагових коефіцієнтів вони, скоріше за все, не є числами. Цілком звичайно, щоб ваші підрозділи перераховувалися в окремій комірці, а потім просто значення у власній комірці, щоб полегшити роботу з значеннями. У цьому випадку я припускав, що ваші показники завжди будуть точно відповідати одному з ваших заголовків стовпців. вага 2.5lbs б кинути помилку, оскільки вона не знайдена у вашому списку заголовків.


Ей спасибі за те, що повернувся до мене. Я спробував використати вашу формулу, і він працює саме так, як ви запропонували. Мені потрібно це зробити ще один крок, коли формула "знаходить" C2 в Sheet1! щоб повідомити про значення в Sheet1! КолонкаA для одного рядка, тобто повідомляє ідеальну ціну пакета, проти прибутку від розміру ціни пакету.
YAtreyu

Тому замість $ 0,80 ви хочете, щоб він повернув $ 1?
Forward Ed

Так! Його перегляд lbs я встановив для того щоб підходити до стовпця для ваги, тоді шукаючи у що колона прибуток я встановлюю, тоді щоб підходити до рядка що прибуток у та вертаю ціну встановити продукт у.
YAtreyu

Так - $ 0.80 - $ 1 від $ 0.20, а $ 0.74 - $ .54. Яке очікуване значення для X на 2 фунтах і 4 фунтах, які ви хочете побачити? Все ще намагаюся обернути мою голову навколо котрого ряд ви намагаєтеся зібрати та чому.
Forward Ed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.