• 締切済み

エクセルVBAについて

以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例):  A B C D E F G 1 1 2  3  4 5  6  7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」  これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。   要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。

みんなの回答

  • nazo-nazo
  • ベストアンサー率39% (17/43)
回答No.2

私の場合は、 Selection.Address で始点と終点を取得します。

macky110
質問者

補足

回答ありがとうございます。 ご指摘の方法で確かに始点と終点を取得できるのですが、$B$1:&D$1 のような形で出てきてしまい、D1とB1それぞれのセルの位置を表せないので、D1とB1の差を計算するといった計算式がかけません。 このような場合はどうすればいいのでしょうか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

'<該当するシートモジュールか標準モジュール> Sub test() With Selection If .Row <> 1 Or .Count < 2 Then Exit Sub '一行目にない場合や、セルをひとつしか選択していない場合は取りやめ  Range("A4").Value = .Cells(1, 1).Offset(1, .Count - 1).Value - .Cells(1, 1).Offset(1).Value End With End Sub 後は、これを、Worksheet_SelectionChange イベントにすると良いでしょうね。

macky110
質問者

補足

早々の回答、ありがとうございます! しかしご指摘の方法を試してみたのですが、1行目のどのセルをドラッグして選択してマクロを実行しても、A4セルには0の値しか入らないのですが。。。。 申し訳ありませんが再度のアドバイスをいただけたら幸いです。

関連するQ&A

  • Excel 2007のマクロ記述について

    Excel 2007で、B4セルからI最終行までの整数のみを小数点以下1桁にする処理をマクロで実行したいのですが、どのように記述したらよいか教えてください。 最終行とはI列にセルの値がある最後の行です。 下記の例のマクロ実行結果は、1→1.0、2→2.0となります。 (例)      列      A  B    C    D    E   F  G   H  I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2   2  2   CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6   1   1  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1   1  1.5  1.5  CIRCLE  CIRCLE マクロ実行結果      列      A  B    C    D    E   F  G   H   I    J      K  行4  A1 0.9   0.9   0.9   0.9  1.2  1.2  2.0  2.0  CIRCLE  CIRCLE    5  A2 1.4   1.4   1.6   1.6  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE    6  A3 0.71  0.71   0.71  0.71  1.0  1.0  1.5  1.5  CIRCLE  CIRCLE

  • エクセル マクロ 入力制限について

    検索で探したのですが、うまくヒットしないため、質問させていただきます。 エクセルのセル入力制限についての質問です。 D1セルが空白でなかったら、A1・B1・C1に入力できないようにする と言う条件です。 それを、D1セルだけでなく、行すべてに適用したいのですが、 (D2 に入力されていたら、A2・B2・C2を入力できなくする) マクロで処理できるでしょうか? マクロ実行は、オープンしたときに実行するようにしたいと考えております。 ご教授お願いします。

  • エクセルVBAで連続しない数字を抽出できますか?

    エクセル2002使用です。 VBAでセルに連番が入力された複数のセルに不連続となったセル番地をとりたいのですが・・・・        A B C D E F 1行目  1 2 3 4 8 12 2行目  4 5 7 8 9 5  左端から必ず右方向へ連続した番号が、入力されますが、途中でその連続性が途絶えます。 1行目の場合はE1セル、2行目はF2セルです。このE1セルやF2セルのセル番地を見つけ出せるようにしたいのですが・・・ 数字は1から始まるとは限りません。 IFステートメントで「不連続ならば・・・」とすればいいと思うのですが、「不連続ならば・・・」の部分で困っています。 よろしくお願いします。

  • エクセル VBA マクロについて

    初めまして。 以下のようなマクロを組みたいんですが可能でしょうか?  A     B     C    D    E    F 東京   足立区 みかん  10   5   50       葛飾区 みかん  20   3   60        港区  りんご  30   1   30 小計                       140 ( 空白行   ) 愛知  名古屋市 みかん  10   5   50      東海市    もも   10   5   50 小計                       100 上記のようなデーターシートがあります。 Dには数字が入ってるんですが、 ここに係数をかけたいんです。 たとえば、=10*1.07 とか (1)元の値に係数かける式をセルに入れるマクロはあるんでしょうか? (2)この係数を別シートのセルで入力したいんですが セルを参照できますか? (3)みかん、もも、りんごの列を検索して、  それに対応した係数かけるマクロはあるんでしょうか? 処理速度は、とくにはこだわりません。 ご指導おねがいいたします。

  • Excel VBAによる検索処理?

    Excelで以下の例のように、A列・B列に入力されているとします。A列を検索して、C列にB列の値を返す式を考えてますが、さっぱりわかりません。VBAとかも正直素人ですが、サンプルもしくは考え方を教えていただければと思います。以下の処理内容です。 ・AXセルが「B」であった場合、次のセル(A(X+1))を検索し、次が空白になるまで検索し、空白になる前の最後の行のB列の値をCXセルに返す。該当しない場合は空白のまま 下記の例ですと3行目、8行目のB列の値を2・3、6-8行目のC列のセルに返すことになります。よろしくお願いいたします。 (処理前) ___A__B__C ------------- 1 2__B__2 3__B__3 4______4 5______5 6__B__6 7__B__7 8__B__8 9______9 (処理後) ___A__B__C ------------- 1 2__B__2__3 3__B__3__3 4______4 5______5 6__B__6__8 7__B__7__8 8__B__8__8 9______9

  • エクセルで質問です。

      A  B   C   D      1 ○ ○  ○○  1    左記のようにAとBのセルに、○や△や×をを入力し、CとDの行に  2 ○ △  ○△  2    値を返す方法を教えて下さい。  3 △ ○  ○△  2    例 A1△、B1△、入力、 C1には△△とD1には3の値を返す。 4 △ △  △△  3    例 A1× B1△、入力、 C1には△×とD1には4の値を返す。 5 △ ×  △×  3 6 × △  △×  4 7 × ×  ××  5 8 × ○  ○×  3  9 ○ ×  ○×  3

  • エクセル VBA 初心者で困っております!

    いつもありがとうございます。VBA初心者です。 データベース(sheet2)のデータをセルA1(sheet1)の値をオートフィルタ-に反映させて抽出し、 その後、セルB1(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2(B1で入力した値)を掛け算し、数値3に出すのが目的です。 sheet1 セルA1【製品名を入力】例、【製品A】を入力 セルB1【数値を入力】例、5を入力 コマンドボタン1を押すと実行 sheet2(データベース)      製品名      数値1    数値2   数値3 1 製品C       2           2 製品A       2 3 製品A       1 4 製品B       4 5 製品D       3 6 製品D       5 sheet3(貼付先) 実行結果   製品名      数値1    数値2   数値3         1 製品A       2        5     10 2 製品A       1        5      5 当初、リストボックスを選択出来るようにし、その値を別のシートに貼り付け、演算処理を行うの方法を模索しておりましたが、 shee2のデータベース、A1・B1(検索値・値)も毎回変わるため、1回ずつの作業を行うように考えなおしたところ、 いきずまってしましました。 時間がないためによろしくお願い致します。

  • エクセルでの連番の処理

    お世話になります。 1行目に入力されたデータをルールに沿って2行目以下にどんどん追加していきたいと思っています。 まずD1、E1のセルに数字を入れます。 例:D1に3、E1に25 を入れてマクロを実行するとD列の2行目以下に3,4,5,6…25と連番で入力出来るようにしたいのです。 この例ではD列は24行目まで入力されています。そこで2行目から24行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。なおA,B,C列は数字、文字列どちらもあります。空白の場合もあります。 この状態でA~E列の1行目のデータを変更し、仮にD1を2、E1を15としたとします。ここで再度マクロを実行すればD25に2、そして順に連番が入りD38に15が入るようにします。 同時に25行目から38行目までのA,B,C列にはそれぞれ1行目のA,B,C列と同じデータを入力します。 これの繰り返しです。 つまり2行目以下のD列で空白の行以下にどんどん連番を入れていく具合です。 前提としてD1、E1は整数しか入りません。またE1の数字はD1より大きいです。ただD1,E1に同じ数字が入った場合、その数字の1行分だけが入力されるようにします。 以上の処理が自動化できるマクロはできますか? アドバイス願います。

  • エクセルの計算式で・・

    エクセルの計算式を=1.01*(A1)とし、1行のセルはこの計算式で求められているのですが、この計算結果の値を、小数点以下四捨五入するには、どのような数式にすると良いのでしょうか? 例)A1 500 B1 505 C1 510.05 D1 515.15 E1 520.30 F1 525.50 ...

  • Excel VBA 初心者です。 作成中のマクロわからないところ

    VBA初心者です。もしセルA1の値がAでセルB1の値がGでセルC1の値にJを含むなら、 セルD1の値を変数i に入れる。 上記を10行目まで繰り返す。 というマクロを作りたいのですが、行き詰ってます。 よろしくお願いします。

専門家に質問してみよう