Прокручивать диапазон ячеек, вводить данные в другие ячейки (выпадающие списки) и возвращать результат вычислений - PullRequest
0 голосов
/ 20 января 2010

У меня есть калькулятор, встроенный в Excel 2003, в котором вы выбираете опции из выпадающего меню, затем данные собираются и рассчитываются, возвращая ваши общие затраты на производство этого пакета предметов. Я хотел бы перебрать все комбинации этого раскрывающегося списка и автоматически вернуть общую стоимость единицы в другую ячейку.

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

  • Значение ячейки для E8 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для G1 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E9 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для A2 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E10 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для B2 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E11 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для C2 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E12 листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для D2 листа, озаглавленного «Затраты»
  • Значение ячейки для E13 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для E2 рабочего листа, озаглавленного «Затраты»
  • Затем необходимо скопировать вычисленный результат в ячейку E22 рабочего листа под названием «Калькулятор затрат», а значение вставить в G2 рабочего листа под заголовком «Расходы».

Тогда то же самое должно произойти с двумя изменениями.

  • Значение ячейки для E8 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для H1 рабочего листа, озаглавленного «Затраты» (смещение на один столбец)

и вычисленный результат в ячейке E22 рабочего листа, озаглавленного «Калькулятор затрат», необходимо скопировать, а значение, вставленное в H2 рабочего листа, озаглавленного «Затраты», снова сместится на один столбец.

Это должно произойти 21 раз (включая начальное время) с теми же двумя смещениями.

Я был бы рад, если бы это было так, и я мог бы просто запустить макрос для каждой строки, но если бы он также мог циклически сокращать строку и продолжать работать, пока не достигнет пустой ячейки, которая была бы идеальной. Если это произойдет, то после 21 раз он должен сдвинуться вниз и будет выглядеть следующим образом:

  • Значение ячейки для E8 таблицы, озаглавленной «Калькулятор затрат», должно = значение ячейки для G1 таблицы, озаглавленной «Затраты» (всегда будет в строке 1, поскольку это количество)
  • Значение ячейки для E9 таблицы, озаглавленной «Калькулятор затрат», должно = значение ячейки для A3 таблицы, озаглавленной «Затраты»
  • Значение ячейки для E10 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для B3 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E11 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для C3 рабочего листа, озаглавленного «Затраты»
  • Значение ячейки для E12 листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для D3 листа, озаглавленного «Затраты»
  • Значение ячейки для E13 рабочего листа, озаглавленного «Калькулятор затрат», должно = значение ячейки для E3 рабочего листа, озаглавленного «Затраты»
  • Затем необходимо скопировать вычисленный результат в ячейку E22 рабочего листа, озаглавленного «Калькулятор затрат», и вставить значение в G3 рабочего листа, озаглавленного «Затраты».

Затем то же смещение, что и раньше, 21 раз и цикл.

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

1 Ответ

0 голосов
/ 26 января 2010

Я не уверен, что это именно то, что вы ищете, меня выбрасывает

Тогда то же смещение, что и раньше 21 раз. И петля.

Я создал код, который будет делать следующее

Значение ячейки для E8 рабочего листа под названием "Калькулятор стоимости" необходимо = Значение ячейки для G1 рабочего листа под названием «Затраты» Стоимость ячейки для E9 рабочий лист под названием «Стоимость Калькулятор "должен = значение ячейки для A2 рабочего листа под названием «Затраты» Значение ячейки для Е10 рабочий лист под названием «Калькулятор стоимости» необходимо = значение ячейки для B2 рабочий лист под названием «Затраты», ячейка значение для E11 рабочего листа под названием "Калькулятор стоимости" необходимо = значение ячейки для C2 рабочего листа под названием «Затраты» Стоимость ячейки для E12 рабочий лист под названием «Стоимость Калькулятор "должен = значение ячейки для D2 рабочего листа, озаглавленного «Затраты» Значение ячейки для Е13 рабочий лист под названием «Калькулятор стоимости» необходимо = значение ячейки для E2 Рабочий лист под названием «Затраты» Затем Расчетный результат в ячейке Е22 рабочий лист под названием «Стоимость Калькулятор "необходимо скопировать и значение вставлено в G2 рабочего листа под названием «Затраты».

Тогда то же самое нужно происходят с 2 изменениями. Значение ячейки для E8 рабочего листа под названием «Стоимость Калькулятор "нужно = значение ячейки для H1 рабочего листа, озаглавленного «Затраты» (смещение на один столбец) и Расчетный результат в ячейке E22 рабочий лист под названием «Калькулятор стоимости» нужно скопировать и значение вставлен в H2 листа под названием «Затраты» снова возмещается на один колонка.

Sub Calc_Loop()
Dim lngRow As Long
Dim intOS As Integer
Dim intCol As Integer

  Sheets("Cost Calculator").Select
  lngRow = 2
  Do
    For intOS = 1 To 5
      'Set Cells E9 - E13 = to Cells A-E on row lngRow on Sheet Costs
      Cells(8 + intOS, 5) = Sheets("Costs").Cells(lngRow, intOS)
    Next intOS
    'Set E8 to G1 on Sheet Costs
    Cells(8, 5) = Sheets("Costs").Cells(1, 7)
    'Set G on row lngRow on Sheet Costs to E22
    Sheets("Costs").Cells(lngRow, 7) = Cells(22, 5)

    'Set E8 to H1 on Sheet Costs
    Cells(8, 5) = Sheets("Costs").Cells(1, 8)
    'Set H on row lngRow on Sheet Costs to E22
    Sheets("Costs").Cells(lngRow, 8) = Cells(22, 5)

    lngRow = lngRow + 1
  Loop Until IsEmpty(Sheets("Costs").Cells(lngRow, 1))
End Sub

Таким образом, этот цикл будет проходить по листу «Затраты» и:
* вставьте G2 для рассчитанного выхода из A2 - E2 с G1 и
* введите H2 для расчетного выхода A2 - E2 с H1
* вставить G3 для расчетного выхода из A3 - E3 с G1 и
* введите H3 для расчетного выхода A3 - E3 с H1 ...

Это то, что вам нужно?

...