- ベストアンサー
エクセルでシート間の値を連携する方法
- エクセルで複数のシート間で値を連携させる方法について教えてください。
- シート1で入力した値をシート2に反映させる際に、シート1の値を削除・変更してもシート2の値が変更されない方法を教えてください。
- エクセルのシート間の値の連携について分からないことがあります。シート1で入力した数字をシート2に加算させたいのですが、どのようにすれば良いでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1番3番です。 >やはりシート2の値が変わってしまいます。 確認ですが、Sheet1を変更してボタンを押せばSheet2はどんどん変わり(加算され)ますよ。 貴殿の希望が >要はシート1にて入れた数字をシート2には「加算させたい」のです。 とのことですから、これでいいと思うのですが(当方にて検証済み)。 それともボタンを押さないうちにSheet2のA1、A2、A3が変わってしまうということでしょうか? だとしたら、前回の質問での当方の回答を、そのままSheet2に残したままではありませんか? 今回は、Sheet2には数式はまったく要りません。マクロのみで実現しております。 もしSheet2のA1、A2、A3に数式が入ったままでしたら、それは必要ありませんので削除してください。 これでSheet1を変更した時点ではSheet2は変わらず、ボタンを押すたびに、Sheet2に加算されるようになります。 もちろん、Sheet1を書き換えないうちでも、ボタンを2度以上押せば、押した分だけ余計に加算されてしまいますから、その点は御注意下さい。 いかがでしょう。御理解いただけましたでしょうか?
その他の回答 (3)
- hirorin00
- ベストアンサー率50% (446/884)
1番です。 1、エクセルを立ち上げ、ツール→マクロ→VisualBasicEditorを立ち上げます。 2、左上の窓のVBAProject(Book1)を右クリック→挿入→標準モジュールを開き、そこに「回答いただいたコード」を貼り付けます。 3、エクセルに戻り、表示→ツールバー→フォームでフォームツールバーを出す。 4、ボタンアイコンをクリックし、任意の場所に任意の大きさでボタンを作ります。 5、同時に「マクロの登録」が開きますので、「Test」というマクロを選択し「OK」をクリックします。 6、ボタン名はボタンを右クリックして選択状態にすると書き換えることができます。「合計」など任意にしてください。 7、これで完成です。 いかがでしょうか?
補足
ありがとうございます。早速やってみたのですが、私のやりかたが下手なためか、やはりシート2の値が変わってしまいます。 もしかして、myCatさんが教えてくれた ●データの数が不定でもカウントできるようにする。 ●カウントする検査値も変更してもいいように予めSheet2のA列にそれを入力しておき、結果はB列に表示する このことでしょうか??だとすれば申し訳ないのですが意味がよくわかりません。お時間のあるときで結構ですので教えていただけないでしょうか? よろしくお願いします。
- SWM5903
- ベストアンサー率68% (4965/7212)
恐らくは自動計算がONに成っているからだと思います。 「ツール」→「オプション」 でオプションを開き「計算方法」を「手動」にすれば出来ると思います。 又、確定ボタンを「再計算」に割り当てれば確定ボタンを押した時点で再計算できるようになると思います。
- hirorin00
- ベストアンサー率50% (446/884)
お久しぶりです http://oshiete1.goo.ne.jp/qa2519702.html こちらで3番さんが回答下さっていますよ? 標準モジュールにこのコードを写し、フォームでボタンを作り、そのボタンを右クリックしてモジュールを実行するように設定すればOKです。
補足
標準モジュールにこのコードを写し、フォームでボタンを作り、そのボタンを右クリックしてモジュールを実行するように設定すればOKです。 ↑ この意味が良くわかりません。すみませんが詳しく教えてください。 よろしくお願いします。
補足
ありがとうございます。確かにできました・・・。 でも、よくわからないところがあるんです。 教えていただいたマクロなのですが、 ↓ Sub Test() Sheets("Sheet1").Select With Sheets("Sheet2") .Range("A1") = .Range("A1") + WorksheetFunction.CountIf(Range("A1:A5"), 1) .Range("A2") = .Range("A2") + WorksheetFunction.CountIf(Range("A1:A5"), 2) .Range("A3") = .Range("A3") + WorksheetFunction.CountIf(Range("A1:A5"), 3) End With End Sub 実際には、シート1のA4~A19までの範囲をシート2のB1に、シート1のD4~D19までの範囲をシート2のB3にという形にして使用したく、上記マクロをちょっといじったのですが、上手く反映されません。ちなみにシート1にて入力されている文字数は4桁~8桁です。 この場合どこを改良すればよろしいのでしょうか?? まったくもって素人質問ですみません。 教えていただければ助かります。 よろしくお願いします。