2017-03-02 8 views
-1

私は以前の質問が誤解されていると感じています。したがって、私は以下のようにこれを行います。私が希望するには、次のものがある:あなたが入力セルB1に4であることがわかり、この絵でExcelモデルで値を手動で入力せずに入力するにはどうすればよいですか?

Excel input and output field

。このB1セルは、異なるシートの複雑なモデルの入力として使用されます。そのモデルの出力はB2にリンクされています。私は他のシート上の複雑なモデルを変更したくない(この部分は必須です)。

今、私はこのようなテーブルを作成したいと思います:

Scene 2

入力が4であるときに、他のシート内のモデルからの出力は今、1です。私はのために手動でこれを行うことができますB2(4である)に書かれた番号を1に置き換えて、その出力をチェックすることによって、1,2,3のいずれかを選択する。私たちの複雑なモデルが私たちを与えるものを観察してみましょう:

enter image description here

どうやらそれは私たちに9を与えるので、私はF2で9を埋めます。私のテーブルが1から4になるので、これは現在問題ではありませんが、どうすればこれを自動化できますか?たとえば、1から100に変更した場合。

問題は、もう一方のシートのモデルに触れたり、モデルを単純化できないことです。

VBAでこれを行う方法、またはExcel自体でこれを行う方法はありますか?

+0

ご回答いただきありがとうございますが、これは私が思った通りではありませんでした。私は画像で質問を更新しました。数式は説明のためのものであり、質問とは関係がありませんでした。 – Snowflake

答えて

1

したがって、モデルに値を入力して出力を記録する必要があります。

非常に簡単なアプローチは、例の画像のようにE列に入力リストを入れることから始まります。入力の値がE2:E5の範囲にあるため、例の開始行番号と終了行番号 - 2と5をメモしてください。

VBAエディタでは、コードを保持する新しいモジュールに新しいサブを作成しました(これを行う方法はGoogleにあります)。コードはかなりシンプルです。

Sub TurnInputsIntoOutputs() 

    ' First we create some useful and important variables 
    Dim inputStartRow As Long ' The row your input values start on 
    Dim inputEndRow As Long ' The row your input values end on 
    Dim currentRow As Long ' A placeholder for when we cycle through the rows 
    Dim processingWorksheet As Worksheet ' How we're going to reference your worksheet 

    ' Then we put values into those variables 
    inputStartRow = 2 
    inputEndRow = 5 
    Set processingWorksheet = ThisWorkbook.Sheets("*the name of your worksheet here*") 

    ' Now we cycle through the input rows 
    For currentRow = inputStartRow to inputEndRow 
     ' Put input value from the current row of column E into cell B1 
     processingWorksheet.Range("B1").Value = processingWorksheet.Range("E" & currentRow).Value 

     ' Put the resulting output value into the current row of column F 
     processingWorksheet.Range("F" & currentRow).Value = processingWorksheet.Range("B2").Value 
    Next currentRow 

End Sub 

そしてちょうどあなたのマクロを実行します(フォームのボタンにリンクまたはちょうどVBEからそれを実行することができます - あなたの行うにはどのようにGoogleにのために十分に簡単)。

2

あなたの説明に問題があると思います。あなたの例は、A1 & A2といっても、A1 = 1、B1 = A1 + 5です。4)

私があなたの窮状を正しく理解している場合、数式を後続の行にドラッグ(自動塗りつぶし)しようとしています。

ただし、最初の列(A)にデータがある場合は、数式を移動したい場合は、右下からダブルクリックします数式参照セルの右下隅をクリックしたまま数式を下にドラッグすることもできます。

あなたのカーソルが、比較的大きい「+」(内装色付き)から比較的小さい「+」(内装色なし...すべて黒色)に変化した場合、右下隅が表示されます。

このとき、相対参照があることを確認するか、非相対参照が必要なものであることを確認する必要があります。これはあなたの質問よりも重要ですが、この種の作業を行う場合は重要です。

この参照:式中

Range("B1").Formula = A1 + 5 

を、A1は-1列オフセットによってB1に対するものです。数式が貼り付けられたりドラッグされたりするすべてのセルは、-1列の相対セルで数式を実行します。

「$」を使用して、列、行、またはセルに詳細を追加できます。あなたの例があり、列Cに数式を表示したいとします。

完全に相対的な場合、ドラッグ式は自動的に隣接する列を指定します。 「$」は、式の列の前にある場合

Range("B1").Formula = A1 + 5 
Range("C1").Formula = B1 + 5 
Range("B2").Formula = A2 + 5 
Range("C2").Formula = B2 + 5 

は、列を「ロック」し、ドラッグので、式がドラッグされたときに、列が同一のままではなく、行数意志変化する。 「$」は、式の行の前にある場合

Range("B1").Formula = $A1 + 5 
Range("C1").Formula = $A1 + 5 
Range("B2").Formula = $A2 + 5 
Range("C2").Formula = $A2 + 5 

は、行を「ロック」します - ドラッグ、その式をドラッグすると、行は同じままですが、列が変更されます。

Range("B1").Formula = A$1 + 5 
Range("C1").Formula = B$1 + 5 
Range("B2").Formula = A$1 + 5 
Range("C2").Formula = B$1 + 5 

「$」が数式の各列と行の前にある場合、ドラッグは両方を「ロック」します。数式をドラッグすると、被参照セルは同じままになります。

Range("B1").Formula = $A$1 + 5 
Range("C1").Formula = $A$1 + 5 
Range("B2").Formula = $A$1 + 5 
Range("C2").Formula = $A$1 + 5 

うまくいけば、それはあなたが探しているものです!

+0

私はそれをもっと慎重に読んだ。私はあなたが正しいと思う – Snowflake

関連する問題