エクセルのマクロで指定のセルの値が変更されたら別のセルのデータを入力する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、特定のセルの値が変更された場合に別のセルにデータを入力する方法について教えてください。
  • 具体的な操作は分かっていますが、それをマクロにする方法がわからず困っています。どのように記述すれば良いのか教えてください。
  • WorkSheetのChangeイベントに記述すれば良いのだと思いますが、具体的な記述方法を教えていただけないでしょうか?
回答を見る
  • ベストアンサー

エクセルのマクロについて教えてください。

エクセルのマクロについて教えてください。 Sheet名「1週」~「16週」の それぞれE5~E55、AC5~AC55,BA5~BA55,BY5~BY55,CW5~CW55,DU5~DU55,ES5~ES55 の値が変更されたら、そのそれぞれのセルの2つ右と、4つ右に Sheet名[データ]のC24とE24のデータを値の貼り付けで入力したいと思います。 具体的にやりたい操作がわかっているのですが、それをマクロにするのが難しくて、困っています。 具体的にどう記述すればよいか、教えていただけないでしょうか? WorkSheet Changeイベントに記述すればいいのだろうなぁまではわかっています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

やるべき事を,淡々と,丁寧に。 ThisWorkbookシートに。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  dim h as range  dim ha as range  dim hx as range  on error resume next  if not sh.name like "*週" then exit sub  set hx = application.intersect(target, sh.range("E5:E55,AC5:AC55,BA5:BA55,BY5:By55,CW5:CW55,DU5:DU55,ES5:ES55"))  if hx is nothing then exit sub  application.enableevents = false  for each ha in hx.areas   for each h in ha    if h = "" then     h.offset(0, 2).claarcontents     h.offset(0, 4).clearcontents    else     h.offset(0, 2) = worksheets("データ").range("C24")     h.offset(0, 4) = worksheets("データ").range("E24")    end if   next  next  application.enableevents = true End sub #若しくは。 判らないポイントを,具体的に,質問に。

maverick1974
質問者

お礼

まさに、完璧です。 コードの内容は把握しかねておるのですが、 そのまま、私のしたいことが出来ました。 ありがとうございました。 非常に簡潔で、完璧な回答でした。 感謝しております。

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

それぞれ16枚のシートにWorkSheet Changeイベントを記述するとして Private Sub Worksheet_Change(ByVal Target As Range) 'E5~E55、AC5~AC55,BA5~BA55,BY5~BY55,CW5~CW55,DU5~DU55,ES5~ES55の値が変更されたら 'IF文でTargetが指定した範囲以外であれば何もしない。 If Intersect(Target, Range("E5:E55,AC5:AC55,BA5:BA55,BY5:BY55,CW5:CW55,DU5:DU55,ES5:ES55")) Is Nothing Then Exit Sub 'そのそれぞれのセルの2つ右と、4つ右にSheet名[データ]のC24とE24のデータ 'Taregtの2つ(或いは4つ)右のセルにシート名データの指定したセルの値を入れる Target.Offset(0, 2).Value = Sheets("データ").Range("C24").Value Target.Offset(0, 4).Value = Sheets("データ").Range("E24").Value End Sub 質問をコードにすれば、こんな感じになるでしょうか?

関連するQ&A

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • EXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか?

    EXCEL マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか? EXCEL2007を使っています。 マクロの記録で並べ替えのマクロをつくるとそのシートでしか使えないのでしょうか? シート1 1 3 2 というデータを「マクロの記録」で昇順に並べ替えるマクロを作成します。 シート2 3 5 4 というデータに適用したいのですが、マクロを実行するとシート1のデータが 並べ替えられてしまいます。 マクロを読むと「シート1」という記述があるのでシート1にしか適用できないようです。 マクロの記録だけで別のシートにも適用できるマクロを作成できないでしょうか? (ただの並べ替えだけだったらマクロを作成する必要はないのですが、実際にはもっと複雑な 動作をさせたいのです)

  • EXCEL のマクロを作りたいんですが・・・

    マクロはあまり詳しくありません。マクロの記憶で設定し、多少内容の変更をする程度です。 マスターのBOOKがあり、月ごとにデータを入力し、その都度名前を付けて保存します。 (データの量はまちまちです) Sheet1にデータを入力し、Sheet2には関数が入っております。 使いたいのはSheet2にあるデータなのですが、データが無い欄は関数が入っていますので、そのままではデータとして使うのが面倒です。 CSVで出力するにしても、空の関数の欄が,,,,と出ます。 データが入っているセルだけを範囲指定して、値の貼り付けをし、使用していない空のセルの関数を消すというマクロが出来るでしょうか?

  • 【マクロ】初心者です。色々教えていただきたいことがありますのでご教授く

    【マクロ】初心者です。色々教えていただきたいことがありますのでご教授ください。 やりたいことは下記になります。 元データ A B C 1 2 3 4 5 6 新データ D E F 3 1 2 3 1 2 6 4 5 6 4 5 かなり簡略化で書いていますがやりたいことを記述していきます。 (1)マクロの記述しているブックのシート1にボタンを作成する。 ボタンから別のブックの元データ(CSVファイル)を選択。 元データのブックのシート1をマクロブックのシート2にコピーします。 コピーデータを加工、修正していきます。 (2)次に列のデータを入れ替えます。 これは法則がないので一行目の行をみて判断します。 (ex.C行の列ならD行に挿入する) (3)列を入れ替えた後、 3 1 2 6 4 5 になっていますがこれを 3 1 2 3 1 2 6 4 5 6 4 5 というふうに一行を二行にしていきます。 (4)最後にorder byします。 1、3、2列目の順にorder byします。 以上がやりたいことになります。 特に(1)がよくわからずボタンを使用時に 別ブックのデータをコピー、貼り付けるのは どうしたらいいのでしょうか? どなたかご教授ください。 よろしくお願いします。

  • エクセル マクロの組み方について

    マクロ等について全くの初心者ですm(_ _)m 以下のマクロを組むにはどうしたらよいか教えて頂けませんでしょうか。 よろしくお願い致します。 サンプル1~10のデータを10回取ったとき、以下のようにデータが1列に100個並んでいて、No.1がサンプル1のデータ、No.2がサンプル2のデータ・・・No.11がサンプル1のデータ、No.12がサンプル2のデータ・・・となっています。これを別のシートに、横にNo.、縦にデータ値を並べ変えたいです。 No.  値 1  101 2  100 : 10 101 11 103 12 102  : 100 102 ↓以下のように別のシートに並び変えたい。    サンプル1  サンプル.2 ・・・・ サンプル10  1  101      100    ・・・・   101  2  103      102          :  :    :        :           : 10                      102

  • エクセルのマクロについて。

    皆様、こんにちは。 以下のマクロを組みたいと考えておりますが、 浅学なこともありどのように組めばよいかわかりません。 皆様のお力をお借りしたくご教示いただけないでしょうか。 ■組みたいマクロ 【前提】 ・刻刻と変化するとある膨大なデータ(以下、元データ(1)とする)のなかから、10月1日時点について設定した条件に適合したものを抽出し、αシート(表の構成はA~C、1~10を使用、Aの欄には抽出された元データのデータ番号が入力されている)にまとめた。 ・その上で、全く別のデータ(以下、元データ(2)とする)から、元データのデータ番号に適合するそれぞれの数値をD~Eの欄に入力した。 ・後日、元データの中から、先ほどと同様の条件で抽出したところ、抽出されたデータの数(量)と数値に変更があった(そのため、抽出されたデータ番号の中には、αシートに含まれているもの、いないものが混在している。)これをαと同様にまとめたものをα’シートとする。 【組みたいマクロ】 ・αとα’シートを比較し、元データのデータ番号が一緒の列の、D~Eの欄についてはαシートの数値をα’シートに自動で転記されるようにマクロを組みたい。 ■まとめ このようなマクロの原型を教えていただけますと幸甚です。 また、今後、皆様のお手を煩わせないようエクセルにつき、深く勉強したいと考えておりますので、このようなマクロを組むために必要な本、おすすめな本も教えていただけないでしょうか。 おおざっぱな質問でわかりにくいかと存じます。 条件がもっと詳細に確定しないとマクロが作れないということがありましたら、その旨質問いただけますようお願い申し上げます。 何卒よろしくお願い致します。

  • エクセルマクロ:範囲の選択

    マクロで範囲を指定したいのですが、 dataと名づけたシートA1に例えば8という値、A2に20という値があります。 この数字は他のセルから参照する計算式になっていて再計算をするたびに変わります。 この時、C8:E20の範囲を指定したいのですが、やみくもに Dim c As Integer c = 3 'C列 Range(Cells(Sheets("data").Range("A1").Value, c), Cells(Sheets("data").Range("A2").Value, c + 2)).Select Selection.Copy などと書いてみたのですが、うまくいきません。 どのように記述すればよいか、教えてください、宜しくお願いいたします。

  • Excel,マクロ / 複数のシートでの値の同期

    Excelで複数のシートである選択範囲の値を同期させたいと考えています。関数で指定すれば簡単なのでしょうが、マクロのユーザーがコンピュータ初心者なので、誤って等式が変更されてしまうのが心配です。マクロで解決する方法はあるのでしょうか? 具体的にはSheet1のA3:D500の値をSheet2のB3:E500の範囲に表示し、Sheet1が変更されるとSheet2も自動的に変更されるプログラムをめざしています。どうぞよろしくお願いします。

  • EXCELのマクロにて

    下のようなデータベースがあります。 No  値1  値2 10   3   2 8   2   4 6   2    6  3   5   3 8   7   5 このようなデータベースからピボットグラフを作成しているんですが、データベースに上端でフィルターをかけNo列にて特定の値を選んだときにそれに対してピボットグラフもフィルターで選んだNoになるようなマクロは組めませんか? ちなみにピボットグラフにはページにNoを、データに値1・値2の合計を表示させています。 マクロに変数(?)を設定すると出来るらしいのですが記述がわからないのです。

  • エクセルのマクロの登録について

    エクセルのマクロ登録についてご質問です。 エクセルでマクロを登録したいのですが、 D7~D49まで自動で数式が反映するようにしてあります。 マクロのボタンを作成し、そのボタンを押すとコピーを選択した状態になるようにしてあります。 これが、すぐよこのE列~AH列まで日付が並んでおり、D7~D49に反映させたデータを 対応する日付の下に毎日値貼り付けをしている常態です。     D      E     F     G   自動反映   9/1   9/2   9/3 7   ~ 49 ボタンひとつでコピーした状態ではなく、その対応した日付の下に値貼り付けすることはできますでしょうか。 これがシート1、シート2、シート3、シート4まで あるのですが、ボタンひとつで登録するようにできますでしょうか。 どなたかご回答よろしくお願い致します。

専門家に質問してみよう