Автоматизация процесса копирования и вставки в Excel вместе со смещением - PullRequest
1 голос
/ 22 марта 2019

Я хочу скопировать значения диапазона N17: N18 и вставить их в другую ячейку.Однако после этого я хочу сместить одну строку и вставить значение заданного диапазона в новую активную ячейку.Я использую функцию решателя данных, поэтому я хочу вставить каждое новое значение N17: N18 для каждого нового ограничения.

Ниже приведены шаги, которые я хочу охватить:

  1. скопировать диапазон N17: N18, вставить в 1 строку со смещением N21
  2. запустить функцию решателя, чтобы получить новые значения
  3. вставить в N22 (1 строка со смещением N21)
  4. запустить решательфункция для получения новых значений
  5. вставка в N23 (N22-смещение 1 строки)

это продолжается для всех новых значений .....

Ответы [ 2 ]

0 голосов
/ 24 марта 2019

Я новичок в VBA Coding, поэтому спасибо, что ответили на мои сомнения.

После игры с кодом я смог найти решение. Вот оно, надеюсь, это кому-нибудь поможет.

Sub SolverShortcut()
'
' SolverShortcut_PasteSpecial-ValuesandTranspose Macro
'
' Keyboard Shortcut: Ctrl+l
'
    SolverOk SetCell:="$N$17", MaxMinVal:=1, ValueOf:=0, ByChange:="$P$2:$P$6", _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverAdd CellRef:="$N$17", Relation:=2, FormulaText:="$P$16"
    SolverOk SetCell:="$N$17", MaxMinVal:=1, ValueOf:=0, ByChange:="$P$2:$P$6", _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:="$N$17", MaxMinVal:=1, ValueOf:=0, ByChange:="$P$2:$P$6", _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve
    '
' PasteSpecial_valuesandtranspose Macro
'
' Keyboard Shortcut: Ctrl+l
'
    Range("N17:N18").Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    ActiveCell.Offset(1, 0).Select
End Sub

ЛЮБАЯ ФОРМА КОНСТРУКТИВНОЙ КРИТИЗМЫ ВСЕГДА ДОБРО ПОЖАЛОВАТЬ.

0 голосов
/ 22 марта 2019

Если вы хотите сделать это вручную, выберите необходимый диапазон значений в листе Excel и нажмите Ctrl + C, чтобы скопировать

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

Снимок экрана с шагами

Если вы ищете программное решение, то я предлагаю макрос Excel (пожалуйста, измените его в соответствии с желаемыми ячейками). Надеюсь, это поможет.

Sub transpose_selection()
    Range("A1:C4").Select
    Selection.Copy
    Range("E1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...