VBAでExcelの別シートの計算表を自動化する方法

このQ&Aのポイント
  • VBAを使用して、Excelの別シートで計算表を自動化する方法について教えてください。
  • シートAの入力セルにシートBの入力値を代入し、結果のセルに出力する方法をVBAで実現したいです。
  • 計算表の計算時間は1秒未満であり、計算表をそのまま利用したいと考えています。アドバイスなどもいただければ幸いです。
回答を見る
  • ベストアンサー

VBA 別シートの計算表

Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 との事ですが、「シートBのどのセルに入力されている値を代入したいのか」という肝心な事に関しての説明が抜けています。  その「代入したい値」が入力されている多数のセルの中で、最初のセルはどのセルなのでしょうか?  又、最初のセルのデータの処理が終わった後で、また次のデータの処理をしなければならないと思われますが、その次のデータが入力されているセルは、最初のセルの下にあるのか、それとも右にあるのか、どちらなのでしょうか?  又、例えば最初のセルに対する次のセルの相対的な位置は、1マスずれた所にあると決まっているのでしょうか? もしかしますと、1行おきとか、1列おきといった飛び飛びの位置にあるセルを参照しなければならないなどという事は無いのでしょうか?  そういった肝心の情報に関して質問者様から説明して頂かなければ、VBAを作るために必要不可欠な情報が不足しているのですから、質問者様が希望されているVBAなど誰も作る事など出来ませんよ。  仮の話として、質問者様が実際に使われているシートBとは異なるレイアウトの表を用いる場合のVBAでしたら作る事が出来るかも知れませんが、そのVBAを参考にして、実際のシートBのレイアウトに合わせたVBAを質問者様御自身は作る事が出来るのでしょうか?  もしも出来ないか難しいと思われるのであれば、必要な情報は全て開示して頂くよりほかは御座いません。  そして、VBAを作る上で必要となる情報は他にもあります。  例えば、ワークシート関数を使って処理を行う際に、数値計算を行う関数に、文字列データを処理させようとしますとエラーとなります。  そして、 >シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力 という作業をVBAによって行う際に、シートBに入力されている値に何か間違いがあって、ワークシート関数で処理できない値となっていた場合には、そこでシートAのB1セルに表示される結果がエラーとなり、それが原因でVBAの動作もエラーとなり、VBAが途中で停止する恐れも若しかしますとあるかも知れません。  万が一そうなりますと、質問者様はそのエラーに対処できるのでしょうか?  その様な事態を避けるためには、「シートAのA1セルに入力しても良い値とはどんな値なのか」という事や、「シートAのA1セルに入力してはいけない値とはどんな値なのか」という事、及び、「もしシートBに、シートAのA1セルに入力してはいけない値があった場合には、単にそのセルは無視して次の処理を行えば良いのか、といった、どんな対応をVBAにさせれば良いのか」という事に関しても御説明願います。

その他の回答 (1)

回答No.1

直接シートBで計算関数を書くのは一番簡単の方法だと思いますが、シートAの計算表をシートBに反映することはできないでしょうか? エクセル表を見せて頂けないでしょうか

hp_win7
質問者

お礼

ご回答ありがとうございます。 計算表で行っている計算は、 一行の計算(数式)ではなく、いくつかのセル(計算)を経由して値を求めています。 入力から出力までが1つのエクセル関数であれば、良いのですが。上記のとおりです。

関連するQ&A

  • VBAのプログラムとシートでの計算の速度

     現在、エクセルVBAでマクロを組んでいます。 マクロで算出した値を、セルを指定して、シートに代入しています。シートの代入する理由は、途中の計算結果の確認とエクセル関数を利用し、マクロの簡便化を図りたいためです。  代入した値を基にして、エクセル関数を使った結果の値を、他のセルに表示(代入)していますが、VBAで、その結果の値を、利用しています。  お聞きしたいのは、最初にシートに代入してから、エクセル関数の結果を得られる前に、VBAが、値を取得しないかどうか心配です。  素人考えでは、同じエクセル上で動作しているので、エクセル関数の計算終了後に、VBAが動くと思いますが。どうでしょうか?

  • VBAの計算式で値を検出し別シートに貼り付ける

    例でA.xls sheet1に添付のデータがありB.xls sheet1のB列に検索値がありC列に記載のとおりの計算式が入力されています。関数入力はC2セルにの計算式を入力しそれを元にオートフィルでC3以降入力しているが膨大な計算式になりExcelを開いたりするのに処理に時間がかかりすぎる為セルに計算式をいれるのではなくVBAで計算式を入力しオートフィルみたいに連続した計算の値のみを入力したいのですがコードが解る方宜しくお願いします。

  • エクセルで、シートごとの計算結果を別の表にする方法

    同じ形式のデータシートが100枚ぐらいあり、このシート上で計算をした結果が10個ほどあります。この結果の一覧表(100×10)を作り、グラフを作成する必要があります。 このとき、一覧表の先頭のセルにシート名とセルの番号を計算式としていれて、つまんで引っ張り100までカウントアップして計算式を入力させたいのですが、うまくいきません。いちいち入力するのは邪魔くさいので、いい方法があれば教えてください。 VBAはよく分かりませんが、解決するならやってみますのでよろしくお願いします。

  • エクセル 違うシートに計算式がある場合

    エクセル2000を使っています。 下記の計算をしたいのですが、方法を教えてください。 1.Sheet1 A1とB1に計算したい元の数値が記入されています。 例えば、A1=1 B1=2 2. Sheet2 のA1とB1に数値が入る事としてC1に計算結果が出るものとします。 3. Sheet1のC1にSheet2のC1の内容を表示したい。 4. Sheet1 A2、A3・・・・・、B2、B3・・・・・に入力した後で、C2、C3・・・・・・に Sheet2のC1で計算させた結果を自動的に入力したい。 別の言い方をすれば、Sheet2 のA1・B1が関数の入力するところにあたり Sheet2のC1が関数の出力(というか、計算結果)にあたります。 Sheet1からSheet2を関数のように使いたいのです。 Sheet1 ____ A_____B_______C 1___1_____2______3 2___2_____3______5 3___5_____8______13 4___9_____1______10 5___4_____5______ 9 Sheet2 ____A_____B_____C 1________________ =A1+B1 2_____________________ こんなイメージです。 Sheet2で計算の入力に対応するセルがA1・B1 計算結果が書いてあるのがC1 実際は、大きな表を参照しながら計算するので、色々計算した結果(途中計算は他のセルも使います)がC1に表されます。 以上、よろしくお願いします。

  • VBAを使わず、計算式を使いまわし

    エクセルで勤務表を作っています。 たとえば、B2に出勤時間を、C2に退社時間を入力すると、D2に勤務時間が表示されます。 現在の計算手法は、A1、B1の値を別セルからそれぞれ参照し、計算をし、結果を別セルに表示させます。その結果をC1セルが参照して、C1セルに表示させるような手法をとっています。 ※話を簡単にするための一例です。この程度ならダイレクトにC1に結果を表示させることは簡単ですが、実際にはさまざまな条件があるため、計算はもっと複雑です。 この手法だと、同じ計算式を日にちごとに用意しなければいけません。 計算式がそこそこ複雑なので、毎日分用意すると、メンテナンスやファイルサイズの問題などあまり よろしくないと思っています。 そこで、VBAのFunctionプロシージャのように、計算式は1セットのみで、毎日の出勤、退勤時間を引数で渡して、結果を返すような方法はできないのでしょうか?

  • 別のシートに特定の文字だけ転送する計算式やVBA

    エクセルファイルのシート「No.1」のセルA1~A30に氏名が入力されて、セルB1~E30に氏名に振り分けられた文字が入力されています。 この文字には不定期にXとTの文字が入力されています。 そして、このシートに入力された氏名の順番や文字は毎月変更されます。 同じエクセルファイルのシート「No.2」のA1~A30には順番が変更されない氏名が入力されて、B1~E30は文字が何も入力されていない空白の状態です。 コマンドボタンを押すとシート「No.1」のA1~A30に入力された氏名に該当するB1~E30のXとTのみ抽出して、シート「No.2」のB1~E30にXとTの文字のみを張り付けるVBAやセルに入力する計算式はどの様に行えば良いでしょうか?

  • エクセル 繰り返し計算

    エクセルで毎月同じ計算をさせるときの方法を教えてください。 シートとしては、入力用、計算用、出力用とします。 入力用シートにA2セルに1月のデータ、B2セルに2月のデータ、C2・・・と12月まであります。 計算用シートのA2に入力されれば、G2、G3、G4のセルに計算結果が出ます。 出力用シートのA2、A3、A4に1月の結果、B2、B3、B4に2月の結果、・・ というように演算させたいのですが計算用シートの引用式、出力用シートの引用式は どの様に作成すればいいのでしょうか? 宜しくお願いします。

  • VBAを使ってシートAの3ヶ所のセルでシートBの計算式を行う。

    シートA    シートB   A B C D     A B C D 1 10 20 30 ()   1 10 20 30 (計算式) 2 10 20 30 () 3 10 20 30 () 4 10 20 30 () (1)シートAのA1,B1,C1をコピーしてシートBのA1,B1,C1に代 入する。D1には計算式が入っているので結果が表示される。 (2)シートD1の計算結果をシートAのD1に代入する。 (3)次はシートAのA2,B2,C2をコピーしてシートBのA1,B1,C1 に代入する。D1には計算式が入っているので結果が表示される。  シートD1の計算結果をシートAのD2に代入する。 (4)上記の動作をシートAのA列のセルに数字がある場合は繰り返し行  う。

  • セルの文字式の計算をVBAで行いたい

    A1のセルに "100+5n" という文字式が入っている状態で VBAにてこのセルの文字式計算を行いB1のセルから順に結果を出力したいと思っています。 "n"は1から順に指定された数まで1づつ増えていくようにし B1のセル:105、C1のセル:110、D1のセル:115 ・・・・ と結果がなるようにしたいのですが、VBAでどのように記述すればいいのか悩んでいます。 VBAを使わずにExcelの関数で計算できるのならそれでもよいと思っています。

  • EXCEL2007 VBA アクティブでないワークシートの名前を取得したい

    Sheet1とSheet2の【A1セル】【B1セル】には以下の処理が入っています。また2つのシートにはVBAを使って、再計算がされるたびに自身のシート名を表示するメッセージボックスを出力する処理を記述しています。 【A1セル】  リアルタイムで値が送られてくる。 【B1セル】  A1セルの値を使った式 【VBA】  Private Sub Worksheet_Calculate()   MsgBox **************  End Sub ここからが質問なんですが、Sheet3をアクティブシートにしている場合、VBAの「*****」の部分に何と記述すれば、再計算されたシート名を取得できますか?

専門家に質問してみよう