web-dev-qa-db-ja.com

Excelスプレッドシートを数式に変換する

マクロや単一セルの数式に変換するのは簡単ではない複雑な計算を含むExcelスプレッドシートがあります。スプレッドシートには約10の異なる入力(人間がスプレッドシートの異なるセルに入力する値)があり、その入力に基づいて5つの独立した計算(5つの異なるセル)を出力します。彼らの計算では、スプレッドシートに事前に入力されたデータ(約100の異なる定数)を使用し、それらを検索します。

このスプレッドシート全体を別のスプレッドシートの数式として使用して、入力値のセットを計算し、対応する出力値のセットを生成したいと思います。これを、入力変数用に10列、出力用に5列の異なるテーブルを作成し、各入力を他のスプレッドシートにコピーして、結果テーブルに出力をコピーして戻すことを想像してみてください。

例えば:

  • A1、A2、A3、... A10は、誰かが値を入力するセルです。
  • 一連の計算を通じて、B1、B2、B3、B4、およびB5はいくつかの式で更新されます

1つの巨大な数式やVBAマクロを作成せずに、A1 ... A10からB1 ... B5までの一連の計算全体を使用できますか?

A100、B100、C100、... J100以降の100行に一連の入力値を設定し、次のようなExcelの魔法を実行します。

  1. A100 ... J100からA1からA10に値をコピーします
  2. 結果がB1からB5に表示されるのを待ちます
  3. B1からB5の値をK100からO100にコピーします
  4. 100から150までのすべての行について、手順1から3を繰り返します。

ExcelのWhat-If分析でそれを行うことができるかもしれません。私はそれを言うのに十分な知識がありません。あなたcan比較的単純なマクロでそれを行います。

基本的に、マクロは次のように機能します。

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.

結果ワークブックの行のデータを列の数式ワークブックに転送する方法は2つあります。 1つの方法は、転置を使用して行を列に変換するためにコピーアンドペーストすることです。もう1つの方法は、オフセットを使用することです。一方の範囲では列をオフセットし、もう一方の範囲では行をオフセットします。

後者の例は次のとおりです。

    ' 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マクロの作成に関して具体的なヘルプが必要な場合は、お知らせください。

1
mischab1

あなたの質問はまだ曖昧すぎると思います。明確な例がなければ答えるのは難しいです。あなたの代わりに、私はあなたのために仕事をしてくれるExcelの専門家を見つけようとします。専門知識が豊富な人なら、すべてをマクロに変えることができるかもしれません。

しかし、私が理解したと思うことに基づいて、答えを出そうと思います。

最も一般的には、ワークブック2の数式でワークブック1の値にアクセスする必要があり、その逆も同様です。ワークブックをリンクすることが最も明白な解決策のようです。これを行う方法を示すいくつかのレッスンがMicrosoftのWebサイトにあります( http://office.Microsoft.com/en-us/Excel-help/create-and-manage-links-to-other-workbooks -HA001054812.aspxhttp://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に特定の値が必要な場合は、セルA1に= A100を入力するだけです。実際には「コピー」する必要はなく、単に「参照」するだけです。

2.結果がB1からB5に表示されるのを待ちます

あなたは本当にこれを待つ必要はないはずです、しかし大丈夫私はそれがいくつかの複雑な背景のことをしていると思います。私はあなたがこの部分を理解していると思います。

3. B1からB5の値をK100からO100にコピーします。ここでも、K100の値が必要な場合は、セルK100に= B1を入力すると、セルK100に「コピー」されます(参照)。

4. 100から150までのすべての行に対して手順1から3を繰り返します。行100を設定すると、各セルにフォーラムが作成されます。セルを選択すると、右下隅に小さな黒い「ハンドル」が表示されます。それをクリックして下にドラッグします。数式は自動的に変更され、絶対的な方法または相対的な方法でセルを参照します。たとえば、セルA1にデータがあり、すべてのセルA100からA150にデータを「表示」させたい場合は、セルA100:= $ A $ 1に入力すると、セルA101もA1を参照します。したがって、$ signはそれを絶対参照にします。

0
Ender

私はこれがかなり遅いことを知っています、そしてあなたがあなたの努力に成功したことを願っています。

そのようなスプレッドシートをいくつか作成しました。最大14のルックアップテーブルと数十の中間計算と補間を含むものもありました。すべて、単一の数値テーブルを作成します。これは、実数から多くのデータ検証を伴うドロップダウンリストに至るまでのいくつかのユーザー入力に基づいていました。さまざまなルックアップ、index()/ match()クエリを使用しました。また、マクロ対応のスプレッドシートに関連する継続的な警告を特に気にしないため、スクリプト言語は使用しませんでした。中間計算とルックアップ用にいくつかのシートを作成しましたが、すべてパスワードで保護されており、ほとんどが非表示になっています。保護されていないセルを含むデータ入力シートと結果シートがありました。

もともと私の望みはそれを誰かに渡すことでした、そしてそれはユーザーに必要なステップを案内するでしょう。それは複雑すぎて、特定のトピックに関する特定の知識が必要であることがわかりました。

結局、120時間以上投資したと思いますが、これは自分だけのツールとして使っていました。これを機能させるために、MSWord文書にコピーアンドペーストするためにフォーマットされた空白の「テンプレート」を含むシートをもう1枚追加しました。これは何年もの間うまく機能しています。ルックアップテーブルの一部のデータを修正する必要がある場合、私はそれらの変更を行うだけで、数値はそれらの変更をすぐに反映します。

最高、ダグ

0
dougp01