• ベストアンサー

列のデータに変化があるとマクロを実行

A列 - B列 - C列 - D列 1 - 123 - 234 - 678 2 - 456 - 567 - 890 3 - 333 - 444 - 555 4 - 765 - 876 - 321 5 - ? - ? - ? 6 - ? - ? - ? の様なデータがあり行のデータ日々増すとき C列最終行のデータD1に出したいのですが? C列のデータに変化があるとマクロを実行して 常にC列最終行のデータD1に出したいのです どなたか良きアドバイスをお願い致します。

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

  • ベストアンサー
  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.1

思われていることと違っていましたらすみませんが、C列の最終行のデータを セルD1に表示させるだけでしたら、C列を入力後セルがD列に移動した瞬間 (D列を選択すると)イベントを実行させるマクロではどうでしょうか。 参考までに下記のコードをSheet1のコードに貼り付けてみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'D列を選択するとイベントを実行する Dim C列最終行, 列 As Long Application.MoveAfterReturnDirection = xlToRight '右へ移動 列 = ActiveCell.Column If 列 = 4 Then 'アクティブセルがD列なら Sheets("sheet1").Range("C65536").End(xlUp).Select C列最終行 = ActiveCell.Row 'C列の最終行 Sheets("sheet1").Range("D1") = Sheets("sheet1").Cells(C列最終行, 3) 'C列の最終行をD1に表示 Sheets("sheet1").Cells(C列最終行 + 1, 1).Select End If End Sub

yama0192
質問者

補足

早速のアドバイス有難うございます私の説明不足で申し訳ないのですが 列最終行のデータは他のシートからコピーはりつけをするときもあり この様なときはどうしたらよいかお手数を掛けますが再度宜しく お願い致します。

その他の回答 (1)

  • kuma3f
  • ベストアンサー率63% (28/44)
回答No.2

C列の最終行までに空白が無ければ、次のコードまたは関数であればコピー貼り付けしたデータも大丈夫だと思います。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim C列最終行 As Long C列最終行 = Application.WorksheetFunction.CountA(Worksheets("sheet1").Range("C1:C65536")) Sheets("sheet1").Range("D1") = Sheets("sheet1").Cells(C列最終行, 3) 'C列の最終行をD1に表示 End Sub または、マクロではなくセルのD1に次の関数を入れても同じ結果になります。 =INDEX(C:C,COUNTA(C:C)) C列の最終行までに空白があると上記では最終行を判断できないのですみません。

yama0192
質問者

お礼

アドバイス有難うございました。 マクロではなく INDEX(C:C,COUNTA(C:C)) で 私の希望どうりの動作がしました マクロについては勉強の教材として 使わせて頂きます。

関連するQ&A

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • Excelで1列のデータを5列に振り分けする

    Excel2003でA列に1行にあるデータ(半角英数字)を 次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロを作りたいです。 (ただし、コピーは2つずつの時もあります。) 元データ ●A列 B列 C列  1  2  3  4  5  ・  ・ 加工後 ●A列 B列 C列 D列 E列   1   1   2   2   3   3   4   4   5   5   上記のような感じです。ただデータは数字のみでなくて、英数字です。 Excelのマクロは全くの初心者で大変困っています。 どうぞよろしくお願いたします。

  • VBA 連続行データを5行ずつ隣の列に貼り付ける

    初めて質問します。VBA初心者です。 B列に連続した1ヶ月分のデータがあり、1日の項目は5項目あります。 このデータを1日分毎に、C列以降に貼り付けるマクロを教えてください。 A列には、日付が5行おきに入っています。 このような感じです。 実行前 ↓↓↓     A列  B列  C列  D列 ・・・ 1行  1/1  10 2        20       3        30 4        40 5        50 6    1/2  11 7        22  8        33  9        44  10       55  11   1/3 12 ・ ・ ・ 実行後 ↓↓↓     A列  B列  C列  D列 ・・・ 1行  1/1  10    11   12 2        20    22    ・       3        30    33    ・     4        40    44    ・    5         50    55    ・    よろしくお願いいたします。

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

  • エクセルで表のある列を最初から最後まで選択するマクロ

    今現在、シートにA3:E700までの大きな表があります。 中のデータは文字列や数値です。 A列B列には途中に空白はありません。C~E列には空白もあります。 この表のB列だけを選択するマクロを書きたいのですが、データは日々増減するため最終行が特定できません。 どのように書けばいいのでしょうか?

  • (マクロ)カット&ペーストを列毎に繰り返したい

    下のように、A列から50列目までデータが入力されています。 各列、データは上から順に詰まっている状態です。 C列のように1つもデータが入力されていない列もあります。 ------------------------------------------ A列 B列 C列 D列 ・・・ Z001 Z003 Z004 Z002 Z005 ------------------------------------------ これを、「B列から順にデータをカットして、A列最終行の下にペーストする」という作業を、各列毎に50列目まで繰り返したいと思っています。 完成イメージは下記のようになります。 ------------------------------------------ A列 B列 C列 D列 ・・・ Z001 Z002 Z003 Z004 Z005 ------------------------------------------ 下記のようにマクロを組みましたが、無限ループになっているのか、強制終了となってしまいます。 どういうふうにマクロを組めばいいのでしょうか? 宜しくご教授お願いいたします。 Sub ADD() Dim i, j As Long For j = 2 To 50 '列番号指定 'B列1行目から順にセルが空白でなければカットする。 i = 1 Do While Cells(i, j).Value <> Empty Cells(i, j).Select Selection.Cut 'A列の最終行の1つ下の行に貼り付ける。。 Range("A1").Select Range(Selection, Selection.End(xlDown).Offset(1, 0)).Select ActiveSheet.Paste i = i + 1 Loop Next End Sub

  • 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

  • EXCLEのマクロ データの絞り込み

    EXCELのマクロについてご教授願います。 数百件のデータで、C列は同じデータは複数あるが、A列に関して別のデータが入っている。B列もほぼ同じデータ ここで条件として C列が同じデータで、A列に特定のワードが入っているデータだけを残し、他のデータを削除するというマクロを組むことは可能でしょうか。 例えば下記のようなデータで、「abcd」だけ残し 他のデータは削除する    A         B        C 1  abcd      AAAAAA      BBBBBB 2  EFGA      AAAAAA      BBBBBB 3  hijk      AAAAAA      BBBBBB 4  lnms      AAAAAA      BBBBBB 5  abGG      PPPPPP      WWWWWW 6  EFTT      PPPPPP      WWWWWW 7  POII      PPPPPP      WWWWWW 2行目から4行目と6行目委から7行目を削除し以下のような データにする。常にA列のデータに ab というキーワードが 入っていて、Cが同じデータは、abが入っているデータのみ 残し他を削除する    A         B        C 1  abcd      AAAAAA      BBBBBB 5  abGG      PPPPPP      WWWWWW のみにする

  • EXCLEのマクロ データの絞り込み

    下記のようなことは可能でしょうか。 ご教授いただけますと幸いです。 A列 B列 C列 あああ いいい 1234 あああ ううう 1235 あああ えええ 1236 のデータを A列 D列 あああ 1234,1235,1236 の用にしたいのです。 A列が同じデータでB列が違う行をまとめて 1行にする。しかし、B列とC列は不要だが、D列に C列にあった数値データを ,でセル内に合体させたい

  • マクロについて

    マクロで(a-b)^2の計算を行いたいのですが、 どう書けば良いのか分かりません。 (A1-B1)^2、(A1-C1)^2、(A1-D1)^2、・・・・・ (A2-B2)^2、(A2-C2)^2、・・・・・ (A3-B3)^2、・・・・・ と、 250行、250列のデータを同じシートに出力したいのですが、 どのように行えばよいのでしょうか。 どなたか、教えていただけませんか。 宜しくお願いいたします。