Превратите электронную таблицу Excel в формулу [закрыто]


4

У меня есть электронная таблица Excel, которая имеет сложные вычисления, которые нетрудно превратить в макрос или формулу из одной ячейки. Электронная таблица имеет около 10 различных входных данных (значения, которые вводит человек в разные ячейки электронной таблицы), а затем выводит 5 независимых вычислений (в 5 различных ячейках) на основе этого входного сигнала. Для их расчета используются некоторые предварительно введенные данные в электронной таблице (около 100 различных констант) и выполняется их поиск.

Я хотел бы использовать всю эту электронную таблицу в качестве формулы для другой электронной таблицы, чтобы вычислить набор входных значений и создать соответствующий набор выходных значений. Представьте себе, что вы создаете другую таблицу с 10 столбцами для входных переменных и 5 столбцами для выходных данных, затем копируете каждый входной файл в другую электронную таблицу и копируете выходные данные в таблицу результатов.

Например:

  • A1, A2, A3, ... A10 - это ячейки, в которые кто-то вводит значения
  • через ряд расчетов B1, B2, B3, B4 и B5 обновляются с некоторыми формулами

Могу ли я использовать всю серию вычислений от A1 ... A10 до B1 ... B5 без создания одной огромной формулы или макроса VBA?

Я хочу иметь набор входных значений в 100 строк от A100, B100, C100, ... J100 и далее, затем сделаю магию Excel, которая будет:

  1. Скопируйте значения из A100 ... J100 в A1 в A10
  2. Подождите, пока результат появится в B1 до B5
  3. Скопируйте значения из B1 в B5 в K100 до O100
  4. Повторите шаги с 1 по 3 для всех рядов от 100 до 150

4
Ваш вопрос действительно неясен. Мы не можем понять, что вы имеете в виду, что вы собираетесь делать. Покажите нам, какие входы, ваши ожидаемые результаты и так далее
JMax

Я обновил некоторые вопросы. Что мне действительно нужно, так это способ использовать серию вычислений в качестве одной формулы. Надеюсь, что это делает вопрос немного яснее.
Георги Кременлиев

Ответы:


1

Вы можете сделать это с помощью анализа «что, если» в Excel. Я не достаточно знаком с этим, чтобы сказать. Вы можете сделать это с помощью относительно простого макроса.

В основе макрос будет работать так:

Open the formula workbook
Set calculation to manual
Loop thru the rows you want to apply the formula to
   Take inputs on current row of result sheet and enter them in the formula workbook
   Force Excel to recalculate
   Take results of formula workbook and enter them in the result sheet
End loop
Turn calculation back on to automatic.

Существует два способа перенести данные в строках в вашей книге результатов в книгу формул в столбцах. Одним из способов является копирование и вставка с использованием Transpose для преобразования строки в столбец, а другой - использование смещений, когда для одного диапазона вы смещаете столбец, а для другого диапазона вы смещаете строку.

Пример последнего заключается в следующем.

    ' set ranges to top left cell
    Set rngFrom = Workbooks("Result.xls").Worksheets("Sheet1").Cells(iCurrentRow, 1)
    Set rngTo = Workbooks("Formula.xls").Worksheets("Sheet1").Range("A1")

    ' transfer values
    For i = 0 To 9
        rngTo.Offset(RowOffset:=i).Value = rngFrom.Offset(ColumnOffset:=i).Value
    Next i

Если вам нужна конкретная помощь по написанию макроса VBA, сообщите нам.


0

Я все еще думаю, что ваш вопрос слишком расплывчатый. Трудно ответить без четкого примера. На вашем месте я бы попытался найти эксперта, который сделает всю работу за вас. Кто-то с большим опытом может превратить все это в макрос.

Я попытаюсь дать ответ, основываясь на том, что, как мне кажется, я понял.

В общих чертах, я думаю, вам просто нужно, чтобы формулы в рабочей книге 2 имели доступ к значениям в рабочей книге 1 и наоборот. Связывание рабочих книг представляется наиболее очевидным решением. На веб-сайте Microsoft есть несколько уроков, которые показывают вам, как это сделать ( http://office.microsoft.com/en-us/excel-help/create-and-manage-links-to-other-workbooks-HA001054812.aspx , http://office.microsoft.com/en-us/excel-help/create-a-link-to-another-cell-workbook-or-program-HP005199514.aspx ).

Если вы считаете, что мой ответ слишком неправильный, опубликуйте пример, снимок экрана или видео, которые показывают, чего вы пытаетесь достичь.


Не совсем то, что я искал. Я попытался обновить вопрос с более подробной информацией.
Георги Кременлиев

0

Я согласен, вопрос немного расплывчат и имеет 4 шага в процессе. Какой шаг самый трудный? Можете ли вы сделать пример меньше и сосредоточиться только на той части, которой вы не можете управлять?

1. Скопируйте значения от A100 ... J100 в A1 до A10

Диапазоны не одного размера, что вы подразумеваете под копией? Если вам нужно определенное значение в A1, тогда вы просто положите = A100 в ячейку A1. Вам не нужно «копировать» на самом деле, просто «ссылаться».

2. Подождите, пока результат появится в B1 до B5

Вы не должны действительно ждать этого, но хорошо, я думаю, что это делает некоторые сложные фоновые вещи. Я думаю, у вас есть эта часть выяснили.

3. Скопируйте значения от B1 до B5 в K100 до O100. Опять же, если вам нужно значение в K100, тогда вы помещаете = B1 в ячейку K100, и она будет «копировать» его (см. Его)

4. Повторите шаги с 1 по 3 для всех строк от 100 до 150. Когда вы настроите строку 100, у вас будет форумла в каждой ячейке. Теперь, когда вы выберете ячейку, в правом нижнем углу появится маленькая черная «ручка». Нажмите и перетащите его вниз. Формулы изменятся автоматически для ссылки на ячейки либо абсолютным, либо относительным образом. Например, если у вас есть какие-то данные в ячейке A1, и вы хотите, чтобы все ячейки от A100 до A150 «увидели» их, вы можете поместить в ячейку A100: = $ A $ 1, тогда ячейка A101 также будет смотреть на A1 и так далее. Таким образом, знак $ делает его абсолютной ссылкой.


0

Я знаю, что уже поздно, и я надеюсь, что вы преуспели в своих усилиях.

Я создал несколько таких таблиц. Некоторые включали до 14 справочных таблиц и несколько десятков промежуточных вычислений и интерполяций; все, чтобы произвести единую таблицу чисел. Это было основано на нескольких пользовательских вводах, начиная от действительных чисел и заканчивая выпадающими списками с большим количеством проверок данных. Я использовал различные поиски, запросы index () / match (). И я не использовал никаких языков сценариев, так как мне не особенно нужны постоянные предупреждения, связанные с электронными таблицами с поддержкой макросов. Я создал несколько листов для промежуточных расчетов и поисков, все они были защищены паролями, и большинство из них были скрыты. Был лист ввода данных с незащищенными ячейками и лист результатов.

Первоначально я надеялся передать это кому-то, и он проведет пользователя через необходимые шаги. Оказывается, это было слишком сложно и требовало определенных знаний по определенным темам.

В конце концов, я считаю, что инвестировал более 120 часов и использовал это как инструмент только для себя. Чтобы сделать это, я добавил еще один лист с пустым «шаблоном», отформатированным для копирования и вставки в документ MS Word. Это работает хорошо в течение ряда лет. Когда некоторые данные в таблицах поиска нуждались в пересмотре, я просто вносил эти изменения, и цифры сразу же отражали эти изменения.

Бест, Даг


Привет Даг, я хотел бы быть более конкретным: вопрос не в том, как обрабатывать несколько входов, а в том, как обрабатывать несколько значений для одного и того же ввода (например, рассчитать один раз для значения интереса 5%, один раз для значения интереса 6% и т. д. Вы можете это объяснить?
Ави

Похоже, вы проводите классическое исследование «что, если», только оно включает в себя набор внешних данных. Вы хотите найти способ сделать все расчеты в рабочей таблице. «Что-если» было одной из первоначальных целей электронной таблицы, разработанной Дэном Бриклином. Поправьте меня, если я ошибаюсь, но вы хотите увидеть несколько экспериментальных значений, рассчитанных по одному набору данных. Если вы можете выразить математику для ячейки в формуле, вы сможете использовать комбинацию относительной и абсолютной адресации в различных типах функций поиска. Если я не здесь, вы можете предоставить образец?
dougp01

В частности, мне нравится использовать заголовки столбцов и строк в качестве фактических значений. Например, заголовки столбцов будут иметь числовые значения 5%, 6% и т. Д. Для ваших формул потребуются функции поиска или Index () и Match ()
dougp01
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.