• ベストアンサー

仕事に役立てようとエクセルのマクロを勉強しています。

仕事に役立てようとエクセルのマクロを勉強しています。 A列に何か入力されていたらB列に関数(SUM)を入力し、それを一番下まで繰り返し行う。 初心者なので、意味の様な補足を頂けたら助かります。 宜しくお願いします。

noname#124414
noname#124414

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> A1に何か入力されていたらB1にSUM(C1:H1)を入れる。 この仕様を満たすマクロが If Range("A1").Value <> "" Then Range("B1").Formula = "=SUM(C1:H1)" End If になります > それを、行の一番下まで(例えば、1000行目まで) 多分=SUM(C1:H1)を1000行までの全てのセルに書き込むとは思えないので その行に対応したCからHまでのSUMをすると考えると For i = 1 To 1000 If Range("A" & i).Value <> "" Then Range("B" & i).Formula = "=SUM(C" & i & ":H" & i & ")" End If Next になり > A1に何か入力されていたらB1にSUM(C1:H1)を入れる。 > それを、行の一番下まで(例えば、1000行目まで) の仕様を満たしたマクロになっていると思われます。

noname#124414
質問者

お礼

解りやすく説明までして頂いて、ありがとうございます! 機会があれば、また宜しくお願いします。

その他の回答 (3)

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

いくつか説明しておきます。 >A列に何か入力されていたら マクロにはイベントというのがあります。いつのタイミングでマクロを実行させるかを決めるものです。 この場合、シートモジュールに Change イベント を作成します。 シート名を右クリックして、コードの表示 をクリック VBエディターが起動したら Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then If Target.Value = "合計" Then Range("B" & Target.Row).FormulaR1C1 = "=SUM(RC[1]:RC[6])" End If End If End Sub を貼り付けて閉じます。 Target は、入力したセルのことです。 そのセルが 1列目(つまりA列)で その内容が 合計 という文字だったら 同じ行のB列のSUM関数(範囲は 1つ右から6つ右まで)を入れる といった流れです。 そちらの状況に合わせて編集してみてください。

noname#124414
質問者

お礼

補足までして頂いて、ありがとうございます。 やってみます! また、宜しくお願いします

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

勉強頑張ってください ところで > B列に関数(SUM)を入力 どのセル(どこ)をSUMするのか不明です。 > 一番下まで 一番下とは?A列の可能性もありますがシートの一番した(2003だと65536行まで)とも考えられます。 仕様が曖昧すぎますのできちんとした仕様を書けるようにしましょう。

noname#124414
質問者

お礼

今後の、参考になりました。 ありがとうございます!

noname#124414
質問者

補足

言葉足らずでスイマセンでした。 A1に何か入力されていたらB1にSUM(C1:H1)を入れる。 それを、行の一番下まで(例えば、1000行目まで)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

Dim rng As Range '変数の宣言 'A列データ入力セル範囲取得(A1~A最終行から上にジャンプして到達したセル) Set rng = Range("A1", Range("A" & Rows.Count).End(xlUp)) 'rngに対応するB列にSUM式を入力 rng.Offset(, 1).Formula = "=Sum($A$1:A1)" 「新しいマクロの記録」を活用してはいかがでしょうか。 例の場合 B1に、=Sum($A$1:A1) と入力し B1のフィルハンドルをダブルクリック あるいは A列データセル範囲に対応するB列セル範囲を選択 B1に、=Sum($A$1:A1) と入力し 編集モードでCtrl+Enter といった操作を記録してみてください。

noname#124414
質問者

お礼

遅くなりました。 解りやすく説明して頂きありがとうございます! フィルハンドル、活用してみます。

関連するQ&A

  • エクセルかマクロで・・・

    エクセル関数かマクロで作りたいのですが、   A列に数字B列に個数を入力していくとします。   A列の数字をB列の個数分だけC列に表示したいのです。  例えばA1に300、B1に5、A2に500、B2に6と入力した場合、   C1からC5に300、C6からC11に500、と表示するにはどうしたらよい  でしょうか。 よろしくお願いいたします。

  • エクセルでマクロを作りたいのですが上手くいきません

    エクセルで会社で使うファイルを作成していますが、ファイルサイズが大きくなりすぎたので、こういうマクロが作れないかと調べていたのですが、やり方がわからないので困っています。 わからないのは、入力シートのA列にデータを入力して、シート2のB列に自動的に表示する ことを自動的にやってくれるマクロです。 今はIF関数をシート2に入力している状態ですが、セルに関数を入れる方法だとファイルサイズが大きくなりすぎてしまいます。 (IF関数をあらかじめ入力しておくセル数がとてもたくさんある為) なお、入力シートA列がブランクの場合は、シート2のB列には何も表示されないようにしたいです。 大変困っております。よろしくお願いします。 

  • エクセルのマクロ

    A列にアルファベット、B列からE列まで数字が入力されている表があります。 A1から順に(A1→A2→A3→・・・)、A列の文字を調べてそれが"A"であった場合のみ、同じ行のB列からE列の最大値をF列に、最小値をG列にコピーする(A列の文字が"A"以外の場合は何もせず下の行を調べる)、ということを繰り返し、A列が空白になった時その作業を中止する、というマクロを作りたいのです。 もちろん、一つの表だけならA列で並べ替えをして関数を使えば簡単にできますが、表がたくさんあるので自動化したいと思います。 マクロに関してはまったくの初心者なので、お知恵をお借りできればうれしく思います。

  • エクセル マクロ 足し算

    いつもお世話になります。マクロ勉強中の初心者です。 マクロの足し算を教えてください。 A列  B列  C列 ・・・・  1   2    3  4   5    6  7   8    9 という数字のデータがあります。 これらのA列の合計、B列の合計・・・など列の合計を出すマクロはわかるのですが、  作成したVBA    Range("a4") = Application.WorksheetFunction.Sum(Range("a1:a3")) A列の合計(A1~A3)とB列の合計(B1~B3)とC列(C1~C3)の合計を、D4に合計させる方法を 教えてください。 どうぞよろしくお願いします。

  • エクセルマクロで教えてください。

    エクセルマクロ初心者なもので、どうか教えてください。 勝手な言い分で申し訳ありませんが、経理の人が出社拒否して 経理するはめになってしまい、少しでも作業負担を減らしたくて お願いしたいのですが^^; エクセル一覧表で、F列のあるセルに 消費税 と文字を入力して、 そのセルの下に太い黒線でD列からR列まで引き、さらに消費税の入ったセルの下の段のO列のセルに=SUM()と入れたいのですが。 こんな感じです。    F   ~  O   P   Q   R 1 消費税  ━━━━━━━━━━━━━━━━━━━━━━ 2        =SUM()          === どうかよろしくお願いします。

  • エクセルSUM関数について

    ここに始めて質問する初心者です。 エクセルでのSUM関数入力にこの方法はないんでしょうか? A列に XXXX.com の文字 B列に タイトル の文字 この文字を <a href="XXXX.com(A列)" target="_blank">(B列)</a>としてみたいんですが・・・ そのSUM関数はないんでしょうか? 教えてくれる方がいましたら教えてください。 よろしくお願いいたします。

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

    お世話になります。 エクセルのマクロについて不慣れなためご質問させてください。 下のような表がありこれを集計して新しく表にしなおしたいと思っています。 1列目 2列目 A    XXXX B    XXXX C    XXXX A    XXXX A    XXXX B    XXXX 1列目の同じ文字列を数えて表を作りなおしたいのです。 1列目  2列目 A     3   ←数えた回数を入れたいと思います B     2 C     1 初めの表はマクロで作成出来たのですが2つめの表を作成する エクセルマクロを作成したいと思っています。 サンプルを頂けると助かります。

  • エクセル マクロ

    はじめまして。 エクセルでマクロを使って研究を進めているものです。 最近マクロを使い始めたのですが、ワークシート関数のスクリプトについてご質問があります。 具体的な記述を書いたほうが説明しやすいので、下に記述します。 Sub Macro1() Windows("a.xls").Activate ActiveCell.FormulaR1C1 = "=SUM(RC[-8]:RC[-1])"・・・(1) Range("J3").Select End Sub このような命令があるときに、sum関数の中に変数を入れることを考えます。そのときに、R1C1表示では選択したセルを基準にして変数を考えなくてはいけないので考えにくいです。そこで、イメージとしてですがこのような書き方はできないのでしょうか。 (1)の部分 ActiveCell.Formula = "=SUM(Range(Cells(2, 2), Cells(2, 変数)))" つまり、rangeやcellsを使って書きたいということです。 また、実際のエクセルのセルに入力されている関数をそのままコピーして、それに変数を自分で手直しして加えるような方法がありましたら教えてください。 よろしくお願いします。

  • エクセル イレギュラーなSUM関数

    会社で使うエクセル表を作っていますが困っています。 A列B列があり A5にはA1~A4の合計のSUM関数が入っています。 B5にもSUM関数を入れたいのですが B1~B4はイレギュラーな事があった場合のみ数字を入力し B5にはB1~B4に入力された数字の合計と B列に何も入力されていない隣のA列の合計を表示させたいのです。 例えるなら A1~A4に3を入力 A5はSUM関数がはいっているので12が表示されているとして B列はB1~B3は未入力 B4に7が入力された場合 B5にはA1~A3とB4の合計の16が表示されるようにしたいのです。 B4に7を入力したので隣のA4の3は合計しないという事です。 どうぞ宜しくお願い致します。

  • excelの関数かマクロで連番、日付を付けたい

    こんばんわ、EXCELマクロ入門者です。 excelの関数かマクロ、VBAで日付や、連番を付けたいです。 できれば関数でできたらなぁと思います。マクロ、VBAはほとんど初めてです。 (1)まず、B2に商品名を入れます。 (2)すると、A2に連番、C2に今日の日付(システム日付)、 D2に商品名と今日の日付、商品ごとの連番が自動的に振っていく感じにしたいです。毎日たくさん入力するらしいのでマクロとかVBAとか関数で作ってくれと頼まれました。 A列は例えばA3に=if(B3="","",A2+1)を入れて何とかできたのですが、 C列の日付(today関数やnow関数ではファイルを開き直すと日付が変わってしまう)とD列の商品名-日付-商品ごとの連番で特に困っています。 イメージとしては下のような感じです。   A   B    C     D 1 連番 商品名 日付    商品名-日付-商品ごとの連番 2 1   ○○○ 2007/8/10  ○○○-2007/8/10-1 3 2   ××× 2007/8/12  ×××-2007/8/12-1 4 3   △△△ 2007/8/13  △△△-2007/8/13-1 5 4   ○○○ 2007/8/15  ○○○-2007/8/15-2 6 5   ○○○ 2007/8/16  ○○○-2007/8/16-3 どなたか、ご教授ください。 どうぞ、宜しくお願い致します。

専門家に質問してみよう