2013-12-10 8 views
0

Мне нужно сделать таблицу Excel, которая принимает вход пользователя в один из двух столбцов на листе. Независимо от того, какой столбец не имеет ручного ввода, необходимо рассчитать его значение. Для иллюстрации:Циркуляр Excel Формула

enter image description here

В этой картине, существует связь между тремя колоннами. Общая стоимость = (Цена/Единица) * (Количество единиц).

Пользователи моей таблицы будут сделать один из двух вещей:

  1. Они будут вручную ввести значение «Цена/шт.» Если это произойдет, «Общая цена» должна рассчитать (Цена/Единица * Единица измерения).
  2. Они будут вручную вводить значение для «Общая цена». Если это произойдет, «Цена/Единица» необходимо рассчитать (общая цена/количество единиц).

Есть ли формула, которая позволит это? Может быть, функция «If-C1-is-a-formula»? Я думаю, что это невозможно.

EDIT: Макросы для меня не идут. Извините, что не упомянул об этом раньше. Я буду развивать это с помощью Apache POI через Java, который doesn't allow for the creation of macros.

+0

Вам совершенно необходим обработчик событий. макросов было бы легко. –

+0

В Excel 2013 есть новая функция под названием «FormulaText», которая вернет формулу ячейки, на которую вы ссылаетесь. Однако я согласен с другими, что это нужно делать с кодом VBA. – jgridley

ответ

3

Если макросы не вариант, то вам нужно будет немного другой установки, например, так:.

tigeravatar non-circular method

На левом, является то, что пользователь заполнит Они войдут в Unit Count и Price, а затем в столбце C выберем Price Type, который является раскрывающимся списком проверки, указывающим на $F$1:$G$1 (Цена/Единица, Общая цена). После того, как они выбрали тип цены, таблица автоматически заполнится соответствующим образом, используя формулы.

В ячейке E2 и копируется вниз (Unit Count):

=IF(A2="","",A2) 

В ячейку F2 и скопировал вниз (Цена/Unit):

=IF(COUNTBLANK(A2:C2)>0,"",IF(C2=F$1,B2,B2/A2)) 

В ячейке G2 и скопировал вниз (Общая стоимость):

=IF(COUNTBLANK(A2:C2)>0,"",IF(C2=G$1,B2,B2*A2)) 

Затем вы можете форматировать столбцы F и G к желанию (в этом случае, вы, вероятно, форматировать их как currenc y или бухгалтерский учет).

Следует также упомянуть, что результирующая таблица может быть на другом листе, вам просто нужно использовать именованный диапазон для выпадающего списка проверки данных (или жесткого кода, если это только два варианта).

+1

Если у вас есть возможность создать условное форматирование, вы можете сделать это решение чрезвычайно удобным для чтения, выполнив что-то вроде цветового кодирования Price Type слева и выделив поле, которое было рассчитано справа.Для удобства использования раскрывающийся список (Проверка данных) может быть полезен и для пользователей. – smcjones

+0

Это очень хорошее предложение! Мне очень нравится идея условного форматирования, чтобы выделить вычисленное поле. – tigeravatar

+0

Хотя из-за требований клиента он не будет работать для моей таблицы, я ценю ответ, поскольку он правильный. Благодарю. – ryvantage