• 締切済み

エクセル マクロでこんな事が出来ますでしょうか?

エクセル マクロで以下の内容の事が出来ますでしょうか? よろしくお願いします。 A列のセルに対応する数値が変更された場合、 その増減分を変更があった(箇所-4)までのセルも 増減分の数値に変更される。 何かボタンを押してではなく、数値が変更されたら、以下のように 他のセルも増減分変更される。 例   A1=10 A2=10 A3=10 A4=10 A5=10 A6=10 A7=10 A8=10 A9=10 A10=10  例(1)  1、A5=10  の数値 10→15に変更。  2、A5=15  の数値が変更されたのを受けて  A4=15 A3=15 A2=15 A1=15 も増減分 変更される  例(2)  1、A3=10  の数値 10→15に変更。  2、A3=15  の数値が変更されたのを受けて  A2=15 A2=15 A1=15 も増減分 変更される  【注意】 A10に戻ることは無くA1まで変更される

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

できるでしょう。 ワークシートのチェンジイベントを利用すればよいでしょう。 同一セルを変更した場合、増減分を把握するのが面倒ですが、非表示の列を従前の値の保管場所として利用するなどの工夫をすれば、後は簡単です。

jumiso03
質問者

補足

お礼が遅くなりまして申し訳ございません。 回答有難うございました。 回答頂き、いろいろと調べましたが、 A列のセルに対応する数値が変更された場合、 その増減分を変更があった(箇所-4)までのセルも 増減分の数値に変更される箇所が分かりませんでした。 よろしくお願いします。以下が現在の状況です。 Private LastTarget As Variant Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Range("A1:A10"), Target) Is Nothing Then If Target.Value <> LastTarget Then h = Target.Value - LastTarget m = IIf(h < 0, " 減少", " 増加") MsgBox Abs(h) & m & "しました。" End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) LastTarget = Target.Value End Sub

  • igig
  • ベストアンサー率15% (3/19)
回答No.1

Excelのバージョンが不明ですので、絶対とは言い切れませんが。 WorksheetオブジェクトにおいてChangeイベントはセルの値が変更された場合に実行されます。 ボタン等は必要ありませんが、ワークシート内のすべてのセルが対象となりますので、セルを判別してプログラムで切り分ける必要があります。

jumiso03
質問者

補足

お礼が遅くなりまして申し訳ございません。 回答有難うございました。 回答頂き、いろいろと調べましたが、 A列のセルに対応する数値が変更された場合、 その増減分を変更があった(箇所-4)までのセルも 増減分の数値に変更される箇所が分かりませんでした。 よろしくお願いします。以下が現在の状況です。 Private LastTarget As Variant Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Range("A1:A10"), Target) Is Nothing Then If Target.Value <> LastTarget Then h = Target.Value - LastTarget m = IIf(h < 0, " 減少", " 増加") MsgBox Abs(h) & m & "しました。" End If End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) LastTarget = Target.Value End Sub

関連するQ&A

  • Excelのマクロで作りたい

    こんにちは。 あるデータベースを使うシステムでエクセルにデータをエクスポートしたら数値を入れている列が文字列として認識してしまいます。 本来文字列が入るところに数値を入れているだけなのですが、エクスポートした時も数値しか入っていないのですが文字列として入っています。 エクセル上では数値しか見えませんノートパッドにペーストすると数値の後ろに「”」があります。しかも改行されていて2行ある状態になっています。 なのでセルの内容を編集(F2)で開いてバックスペース2回押し、Enterで初めて数値として認識されます。 この行為をマクロ化するにはどうすればいいのでしょうか? マイクの記憶で同じ動作をしてもそのセルの場所と中にある数値も一緒に記憶されるのでどこでやっても記憶した数値を貼り付けする事になってしまいます。 これをどの箇所でもマクロを押せばそのセルをF2してバックスペースを2回する様に設定することは可能でしょうか? 判りずらい説明ですがもし判る方が居たらご教授下さい。 宜しくお願いします。

  • Excelマクロで罫線をひきたい。

    Access2000からエクスポートした結果のExcel2000のワークシートに、線をひきたいんです。 一番最初のセルはa1と決まっているけど、一番最後のセルは毎回変わってしまうのですが、 このセルを取得するためにはどんなマクロボタンを作成すればいいでしょうか? ただ本来の希望としては、マクロボタンひとつで、並べ替え>セルの変更>罫線、としたいのですけれど。 「セルの変更」というのは、エクスポートしたデータで「ランク」という項目があり、 これに「特・A・B」という項目があります。 Access上はひとつのフィールドにまとまっているのですが、Excel上では、それぞれ「特・A・B」という列を作成し、データがあったら、「○」を入れるというようにしたいのです。 (列が増えることになります。) また「備考1・備考2」がAccess上にあり、これは別フィールドとなっていますが、 今度はExcel上で「備考」としてひとつの列にしたいのです。 (列の減少) 別シートを作成してもかまいません。 このようなことはできるのでしょうか? せめて罫線だけでもひければ、と思います。 よろしくお願いします。

  • マクロで可能でしょうか??

    初めまして ken2308といいます。 Excelは有る程度、使えるのですが 業務上マクロを覚えることになりました。 マクロに関しては全くのシロウトです。 Excelのマクロで以下のような事をやろうと思っておりますが Excelのマクロでは対応は可能でしょうか?? 【例】 Excelファイルが2つあります。 このファイルの大きさが【50列】×【50行】あり 【列】は飛び飛びで20列ほど非表示にており 【行】は複数のセルを結合して有ります。 このファイルを1つのファイルにしたいのですが Excelのマクロでは対応は可能でしょうか?? 自分としては以下のマクロを作成すればよいと 思っているのですが・・・ (1)列・行ともに非表示⇒表示にする。 (2)結合しているセルを解除戻す。 (3)2つのファイルをコピペする。 (4)貼り付け後、不要な列を削除する。 ※このマクロがうまく行ったら、上記で出来たファイルから  ピボットテーブルを作成するつもりです。

  • エクセルのマクロ

    エクセルのマクロでわからないことがあり質問なんですが A1セルの数値がリアルタイムに更新されていて このA1セルの数値が更新されるたびに B1とB2にA1セルの最新の値を交互にコピーしていくマクロを 作りたいんですがうまくいきません。 例としては A1に1と表示→B1に1と表示 A1に7と表示→B2に7と表示 A1に18と表示→B1に18と表示 これをA1セルが更新され続ける限り繰り返しすマクロです。 どなたか教えていただけるとありがたいです。

  • エクセルのマクロで悩んでます

    はじめて投稿いたします。 現在、エクセル2000でマクロを組んでいるのですが、何日も悩んでそこから動けないので質問させていただきます。 やりたいことは、 (1)検索フォームの入力テキストに記載した数値を読んで検索ボタンを押すと、 (2)データブック.xls内の完全に一致した数値のセルの行をアクティブにして (3)その行のA列からO列の値をコピーして (4)入力ブック.xlsの入力シートのB4:B18に数値だけ貼り付け したいと考えています。 検索フォームは入力ブック.xls内で作成しています。 今のところ、(3)でA列の値を読んで、(4)でB4セルに貼りつけということはできているのですが、複数になるとできていません。 根気よく、同じプログラムを書くのが良いのでしょうか? かなり面倒なので、もっと簡単にかける方法があれば教えてください。

  • Excel、改ページ、マクロ

    A列に数値が入ってたら、そのセルの上に改ページを入れたいです。 A列には数値か空白のセルがあります。 数値が変わったら改ページというマクロだと、数値が入ってるセルの上下に改ページがはいってしまいます… どのようにしたらいいか、教えてくださいm(_ _)m 宜しくお願い致します。

  • excelでマクロが思うように動きません

    EXCELでのマクロを使った文字列検索についてお尋ねします。 EXCEL2003のシートにフォームボタンを設置し、そのボタンに 以下のマクロを設定しています。 ここから--------------------------------------------- Sub 検索() Cells.Select Application.Dialogs(xlDialogFormulaFind).Show End Sub ここまで--------------------------------------------- ボタンをクリックすると、検索ダイヤログが開き、任意の文字列を 検索できるのですが、別シートまで検索してしまいます。 【希望1】検索対象をアクティブシートのみにしたい。 表示される“検索ダイヤログ”では、以下項目が設定可能ですが、 1.検索する文字列 2.検索方向 3.対象 4.大文字と小文字を区別 5.完全に同一なセルだけを検索 6.半角と全角を区別 【希望2】変更可能な以下の項目を固定(変更できないように)したい。 2.は“列”に固定 3.は“値”に固定 4.5.6.はチェックボックスでon/offできるようになっていますが、  全てoffに固定 【希望3】出来れば検索ダイヤログには1.の“検索する文字列”欄と、 “次を検索”ボタン、“閉じる”ボタンの3つだけを表示したい。 このような希望を満たすマクロは作成可能でしょうか? おわかりの方がいらっしゃいましたら、ご教授ください。 よろしくお願い致します。

  • エクセルでのマクロ作成

    エクセルで作成したボタンをクリックすると以下の事を行うマクロを作りたいと思っています。 (1)最初に貼り付けたいセルの範囲をドラッグで選択する。(手動) (2)マクロを登録したボタンを押す。 (3)マクロ内で指定したセル(たとえば $A$1)をコピーして、(2)でボタンを押してマクロを実行する前に(1)で選択したセルの範囲に貼り付ける。 VBAが分からないので難儀しています。 宜しくお願いします。

  • エクセル2010 繰り返しマクロ

    (1)g列の空白の最上行に =SUMPRODUCT(min((a:a>=f2)*(a:a<f2+730)*e:e)) と入力。 そのセルをコピーし、同じセルに値を上書き貼り付け ↓ (2)a列に(1)のセルの左隣のセル以下の数値がある行の、b列を削除 (画像の場合、(1)のセルがg1の場合、b2,b3を削除する) というのを、f列に数値がある行だけ繰り返すマクロの構文を教えてください。 大変お手数おかけいたしますが、どうぞよろしくお願いします。

  • Excel 2003のマクロについて

    セルにある文字列に”-”を加え、別のセルに移したいです。 例/ABCDEFGHIJ→ABC-DEFGH-IJ としたいです。 文字列の“-”の入る位置は、「例/」の位置で固定です。 Excel2003を使用しています。 マクロ等で一発変換できる方法はありますか? マクロ初心者なので、教えて下さい。宜しくお願い致します。