- ベストアンサー
エクセルの使用方法についてご教示お願いします。例え
エクセルの使用方法についてご教示お願いします。例えばX1=1,Y1=2の値が入ったシートがあり、A1セルに=X1*Y1といった数式を入れます。当然A1セルには数字の2が表示されますが、A1セルに表示される数字と同じ数字をB1セルにそれもB1セルには=A1等の数式は一切設定せずに表示させる場合、どのような方法があるでしょうか?更にB1セルに表示させた数字はX1及び、Y1に設定された数値が消されても残るようにできれば最高です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 質問を何度も読み返してみましたが、関数では難しいようです。 質問内容を極力忠実に再現できるようなコードにしてみました。 画面左下にある操作したいSheet見出し(Sheet1・Sheet2・・・)の部分で右クリック → コードの表示 → VBE画面が出ますので、↓のコードをコピー&ペーストして X1・Y1のデータを色々変更してみてください。 尚、A1セルの数式はご自身で入れておいてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から 'X1・Y1セルのどちらかまたは両方にに空白があればマクロを実行しない '(A1セルに変更があってもB1セルはそのまま) If WorksheetFunction.CountBlank(Range("X1:Y1")) Then Exit Sub 'データ変更セルがX1またはY1セルであれば If Target.Row = 1 Then If Target.Column = 24 Or Target.Column = 25 Then 'B1セルはA1セルデータを! Range("B1") = Range("A1") End If End If End Sub 'この行まで こんな感じではどうでしょうか? ※ 質問に >更にB1セルに表示させた数字はX1及び、Y1に設定された数値が消されても残るようにできれば最高です とありますが、X1・Y1のデータ削除した場合は希望の動きになると思います。 「0」を入力した場合は削除ではないのでそのままの計算結果が表示されます。 以上、参考になれば良いのですが・・・m(_ _)m
その他の回答 (5)
- MackyNo1
- ベストアンサー率53% (1521/2850)
>すなわち、X1とY1がどのような条件の時に値を『手』入力するのか、全くわかりません。 ここでいう「値を入力する」というのは手入力のことではなく、その前の説明にもあるように、マクロを実行してB1セルに値を入力する(自動的にマクロを走らせるトリガーになる)ということです。 すなわち、聞きたかったのは、X1とY1の値を変更したときにマクロを走らす(B1セルに入力する)なら、関数とまったく同じ結果になるので、X1とY1の値をどのように変更したときにマクロを実行させるのかを聞きたかったわけです。 いずれにしろ、そのような自動入力操作にしたい目的や、処理したいセル範囲などをもう少し具体的に例示されたほうが、皆さんからより的確な回答が寄せられると思います。
お礼
いろいろアドバイスいただきありがとうございました。 無事解決いたしました。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>X1とY1にそれぞれ数値を入力した時に、その乗算値をA1にもB1にも表示したいのです。ただ、B1セルには"=A1"や"=X1*Y1"といった数式は入れずに行いたいのです。 この条件だと、X1とY1にデータを入力したときが、マクロを実行するとき(B1に値を入力するとき)になりますが、この条件では関数で入力した場合と全く同じことになります。 すなわち、X1とY1がどのような条件の時に値を入力するのか、全くわかりません。 実際のシートでこのような処理を行うケースは、個人的にはほとんどないと思うのですが、どのような目的でこのような操作がしたのか、もう少し具体的に説明されたほうが、皆さんからより的確な回答が得られると思います。
補足
>X1とY1がどのような条件の時に値を入力するのか全くわかりません んんん~、何と説明すればいいのでしょう。単なるキーボードからの手入力フィールドに(その入力されたデータと他のデータを使って様々な数値を算出します)、入力する為の条件が必要なのですか? 文書を読ませていただきますと、『(B1に値を入力するとき)』のように、私が使っている、『入力』の意味と、MackyNo1さんが使われている、『入力』の意味が違っているように思えますが・・・・。私が言う『入力』とは、手でキーボードから入力することを意味しています。 つまり、MackyNo1さんが書かれた文書を自分が書くと、 『この条件だと、X1とY1にデータを『手』入力したときがマクロを実行するとき(B1に値を『表示』するとき)になりますが、この条件では関数で入力した場合と全く同じことになります。すなわち、X1とY1がどのような条件の時に値を『手』入力するのか、全くわかりません。』 X1とY1への入力は、マクロや関数を実行した結果の入力ではなく、人が介在したマンマシンインターフェースでの手入力なので、入力する条件をあえて言うなら、『入力する必要が発生した時』としか言いようがありません。 申し訳ないです。
- MackyNo1
- ベストアンサー率53% (1521/2850)
質問者も当然お分かりのことだと思いますが、ご質問のことを実現するにはマクロを利用する必要があります。 ところで、B1セルにA1セルのデータをそのまま表示したいとのことですが、どの段階の(何を行ったときに)データを表示したいのでしょうか? いずれにしろ、ご希望の動作の目的がわからないので、皆さんもサンプルコードも提示しにくいと思います。 >何をやればいいのかわからない初心者でかつ、直ぐに対処方法を知りたいからこそ、ここに投稿し皆さんのご協力を仰いでいるつもりなんですがね マクロを実行した場合には、その結果が誤っていた場合でも、通常の入力とは異なり、Ctrl+Zキーなどで「元に戻す」操作ができません。 すなわち、データの途中経過が残りませんので、予期しないデータの変更があった場合には、重大な問題が発生する可能性があります。 また、皆さんから提示してもらったマクロを利用する場合にも、そのコードの内容を理解している必要があり、少なくとも自分で修正できる程度の最低限の知識は必要です。 ご質問の目的が良くわからないのですが、今回のケースでしたら、マクロを利用する場合でも、単純にそのセルをコピーして、そのまま形式を選択して「値」貼り付けするのが最も簡便な対応のように思います。
補足
お忙しいところ大変スミマセン。 >ところで、B1セルにA1セルのデータをそのまま表示したいとのことですが、どの段階の(何を行ったときに)データを表示したいのでしょうか? X1とY1にそれぞれ数値を入力した時に、その乗算値をA1にもB1にも表示したいのです。ただ、B1セルには"=A1"や"=X1*Y1"といった数式は入れずに行いたいのです。 >単純にそのセルをコピーして、そのまま形式を選択して「値」貼り付けするのが最も簡便な対応のように思います。 確かにその通りかと思います。また、そのやり方で実現できることもわかった上であえて質問させていただきました。と、言うのもその『コピーしてそのまま形式を選択して「値」貼り付け』をできる人間がそのシートを使用するなら何ら問題はないのですが(自分はできるつもりです)、使用する人間が70を超えた方であるため、なんとか煩わしい作業を行わずに見せることができないかと思い投稿させていただきました。でも、よくわかりました。マクロを使用しなければ実現不可能ということですね。
- imogasi
- ベストアンサー率27% (4737/17069)
初心者らしい質問ですが、VBAを勉強しないと対処できないでしょう。 もっと日頃エクセルを使うと同時に、エクセルの関数の本質(エッセンス、解説書には判るものとして改めては書いてないことが多い)を勉強してください。そうすれば関数を頭に置いたこういう質問(考え・要望)は、lしなくなるはずです。 >A1等の数式は一切設定せずに表示させる場合、 どんなことを考えていっているのか。何も(関数、操作、VBAなど)しなければ、セルの値が変わるはずが無いではないですか。 >更にB1セルに表示させた数字はX1及び、Y1に設定された数値が消されても残るよう・・ ここの部分だけ採り上げたなら、操作で、このセルに形式を選択して貼り付けで、値を貼り付ければ、式は消えて値だけ残ります。
補足
厳しいご意見ありがとうございます。確かにおっしゃるとおりです。自分は勉強不足だと思います。ただ、それを言い出すとここのサイトの存在意義がなくなりませんか?何をやればいいのかわからない初心者でかつ、直ぐに対処方法を知りたいからこそ、ここに投稿し皆さんのご協力を仰いでいるつもりなんですがね~(^^ゞ一歩ずつですが勉強はしています。ただ、要求のスピードに追いつかない分をこのサイトで補わせていただきたいと思っている次第です。
- mu2011
- ベストアンサー率38% (1910/4994)
自動で行いたい場合は、マクロ(VBA)組み込みになります。 手動でも良い場合、A1をコピー→B1に形式を選択して貼り付け→値を選択→OKの操作になります。
お礼
早々の回答ありがとうございます。 マクロVBAの作成はかなり難しいものでしょうか?
お礼
親切ご丁寧なアドバイス本当にありがとうございます。 何度も読み返していただくなど貴重なお時間を割いてまで回答いただけましたこと心より感謝申し上げます。 言われるとおり入力して実際に使用してみたところ、思い描いた通りの動きが実現できました。あとは、教えていただいたマクロを自分なりに勉強を重ねアレンジして最終的な形の物に仕上げてみたいと思います。 本当にありがとうございました!