• ベストアンサー

エクセルで行挿入した際、自動的に計算式も入力される方法を教えて下さい。

例えば、A列は単価を入力する欄、B列には数量を入力する欄、C列には=A1*B1(1行目の場合)の計算式が入っている表があるとします。 表の途中で行挿入すると、自動的にCのセルに数式が入力される方法はありますでしょうか? 複数の人に毎月この表(実際はもっと列が多い表)に入力して貰って集計等をしているのですが、各個人で表の途中で行挿入して行を増やした際、数式がコピーされてない人がいるため、行挿入すると自動的に数式が入力される方法がないかと思っております。 エクセルのバージョンは2000又は2003、行挿入は必要なので、行挿入を禁止する事はできません。 宜しくお願いします。

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

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

こんにちは。 Excel2003 ですと、その場所をリストに変更しておけば、自動的に数式は入ります。 Excelの2000の場合ですが、簡単に言えば、行の挿入のそれぞれのボタンにインスタンスを設ければよいわけですが、結構、これが複雑です。以下のようになります。(Excel2003でも可能です) コマンドボタンにインスタンスを適用したので、他のブックにも影響します。出来れば、ブック単独でお使いになったほうがよいと思います。 ブックを開いた時に設定され、ブックを閉じた時に、解除されます。 単独で、起動する場合は、Auto_Open 、単独で解除する場合は、Auto_Close を実行すれば、行えます。 '---------------------------------------------------------- '以下Class1 モジュール Private WithEvents myBtn As CommandBarButton Public Property Set Btn(ByVal myNewBtn As CommandBarButton)   Set myBtn = myNewBtn End Property Private Sub myBtn_Click _   (ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) Dim c As Range   If Selection.Columns.Count <> Columns.Count Then Exit Sub   CancelDefault = True   Application.ScreenUpdating = False   Selection.Copy   Selection.Insert Shift:=xlShiftDown   Selection.PasteSpecial xlFormulas   For Each c In Selection    If c.HasFormula = False Then     c.ClearContents    End If   Next c   Application.CutCopyMode = False   Selection.Cells(1).Select   Application.ScreenUpdating = True End Sub '=================================================== '以下標準モジュール Private myClass1() As Class1 Sub RowInsertButtonEvent()  Dim myCtrl As CommandBarButton  Dim i As Long  On Error GoTo ErrHandler    For Each myCtrl In Application.CommandBars("Row").Controls      If myCtrl.Caption Like "挿入(&I)" Then      ReDim Preserve myClass1(i)        Set myClass1(i) = New Class1        Set myClass1(i).Btn = myCtrl      i = i + 1      End If    Next  For Each myCtrl In Application.CommandBars("Worksheet Menu Bar"). _    Controls(4).Controls    If myCtrl.Caption Like "行*" Then     ReDim Preserve myClass1(i)     Set myClass1(i) = New Class1     Set myClass1(i).Btn = myCtrl     i = i + 1     Exit For    End If  Next ErrHandler:  If Err.Number > 0 Then   MsgBox "設定に失敗しました", vbCritical  End If End Sub '---------------------------------------------------------- Sub Auto_Open '起動時に設定  Call RowInsertButtonEvent End Sub '---------------------------------------------------------- Sub Auto_Close '終了時に設定解除  Erase myClass1() End Sub '----------------------------------------------------------

happy_goo_001
質問者

お礼

ご回答、真にありがとうございました。 Excel2003で「リスト」を試したら、出来ました! 悩みが一気に解決!感激&感謝です! Excel2000でもこのような処理をしているので教えて頂いた方法でやりたいのですが、VBAは初心者のため、高度な記述はVBAをもっと勉強してから試してみたいと思います。 この度は本当にありがとうございました。 何とお礼を言ったら・・・という感じです。 ご親切に心より感謝申し上げます。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

行を挿入したらでは無いですが、、、 入力者にとってその計算式は無くても影響がないものなのでしょうか? であれば、保存時に式を埋めてしまうとか。 例えば、ThisWorkbookモジュールに Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  With Worksheets(1)     .Range("C1", .Range("A65536").End(xlUp).Offset(0, 2)).Formula = "=A1*B1"  End With End Sub とすると保存時にA列最終行を判断してC列に式を入れます。

happy_goo_001
質問者

お礼

ご回答、真にありがとうございます。 入力者は数式が無くても構いません(今でも行挿入しても計算式をコピーしないで提出してくるぐらいですし)。 教えて頂いた方法、例の状態で試した所、出来ました! ただ、そうするとC1の項目名まで数式になってエラーが出てしまいましたが、表自体には数式がコピーされているので、私の作業には問題ないと思います。 実際作業しているシートでも試して見ます。 本当にありがとうございました。

  • kamejiro
  • ベストアンサー率28% (136/479)
回答No.1

質問者さんの理想な回答かどうかわかりませんが、 例えば、A列は単価を入力する欄、B列には数量を入力する欄、C列には=A1*B1(1行目の場合)の計算式が入っている表があるとします。 では、この例の場合で、3行目と4行目の間に2行目の行の式を行挿入をしたい場合を想定します。 2行目をアクティブにして、右クリック→コピー(C) 4行目をアクティブにして、右クリック→コピーしたセル(E)を挿入 これで、計算式の入った行を入れ込むことができると思います。ただし、2行目のA列、B列に値がある場合、その値も貼り付けられます。

happy_goo_001
質問者

お礼

早速のご回答、真にありがとうございます。 行挿入操作をする人の手順というよりは、「誰かが行挿入をしたら、自動的に同じ列の計算式が入力される表(ファイル)を作る方法があれば知りたい(エクセルの機能、マクロ、VBA等)と思っております。 質問の書き方が悪くて申し訳ありませんでした。

関連するQ&A

  • 行の挿入で数式も自動的に挿入

    C1列に=SUM(A1:B1)を入力し、オートフィルを30行目までかけました。 3行目で行の挿入をした時に 自動的にC列に数式が入力されている状態 (上の行、又は下の行のコピーを挿入) にしたいのですがどうすればよろしいでしょうか? 行をコピー  → コピーしたセルの挿入 以外の方法はあるんでしょうか? よろしくお願い致します。

  • エクセルの行挿入の際の計算式について

    いろいろ探したのですが、答えを見つけられずにいます。 良かったら教えてください。よろしくお願いしますm(_ _)m 。 エクセルで、1行目から10行目まで関数の数式(例えばSUM、IFなど)が入力されているとき、7行目などで行挿入をした際、その関数が他の行と同じように、挿入された行にも自動で反映するようにすることはできるのでしょうか?? デフォルトではできない・・・ですよね?私はできないように思うのですが。 たくさん数式が入っている表ですと、ひとつひとつ数式コピーを加えていくのが手間なもので・・・何か良い方法や設定があればご伝授お願いいたします。 分かりにくい文章ですみません。

  • EXCELで自動で行が挿入できますか?

    EXCEL2000を使用しています。 1.下記のようなプロジェクトリストを作成しています。 A列:プロジェクト B列:試験 C列:施設名 2.C列に施設名を入力すると、自動的に行の挿入ができるようにしたい。 3.試験が決定されると次々と施設が決まっていくため、予め、施設名を入力することができません。 4.その都度、行の挿入を行えばいいのかもしれませんが、複数の方が入力するため、自動的にできたらいいなと考えています。 厄介な質問で申し訳ありませんが、何かよい方法はありますでしょうか? どうぞよろしくお願いいたします。

  • excelで行挿入について

    excel97を使っているのですが、まず下の表を見てください。 行/列   A  B  C   1  メーカ      2  あ           3  い             4  合計           5  う         6  え           7  お              8  か                このような表があるのですが、行1~4で一つのグループなんです。 同じように  行4と行5の間に「メーカ」  行6と行7の間に「合計」 というふうに「メーカ」挿入、2行空けて「合計」挿入、「メーカ」挿入・・・を約千行分繰り返して 行/列  A  B  C  1  メーカ      2  あ      3  い      4  合計      5  メーカ      6  う      7  え      8  合計      9  メーカ     10  お     11  か     12  合計     このようにしたいのですが、簡単な方法は無いでしょうか?

  • エクセル 表の自動追加

    エクセルで見積書を作成しています。 単純化して書きますと    A      B        C    D   E 1 商品コード 商品名    単価   数量  金額               合計¥~~ vlookup関数を使ってA列に商品コードを入力B列に商品名、C列に単価が引用され、後はD列の数量を入力すればE列の金額および合計金額が出るというようにしているのですが、 A~Eが埋まれば自動的に2行目が合計との間に挿入されるような関数?などはあるのでしょうか。現在では15行程度の表があるのですが、もっと数が増えたときや、数が少ないときに〆の線を引くのが面倒なのです。  私自身はエクセルはネットで独学程度で学んでいるので詳しくありません。自分でいろいろ調べたのですが(と言ってもネットで調べただけですが)VBAを使用しなければ難しいでしょうか? 拙い文章で申し訳ありませんが、ご教授のほどよろしくお願いいたします。

  • Excelの行挿入で

    Excelのシートにデータがつまっているのですが(これから新しく表を作るということではないということです。)、行の挿入をしたいのです。 このとき、行を選択して、右クリックで「挿入」を選べば挿入自体はできます。 しかし、 既にある表は、行が、A列とB列が結合されているのですが、 単に上記のように挿入すると、 A列B列が分かれている行が挿入されてしまいます。 新しく挿入された行のA列とB列を選択して、「セルの書式設定」の「配置」でセルを結合させてもいいのですが、 いちいちそうしなくても 挿入時点ですでに結合されているようにするにはどうすればよいですか。 (Excel2000)

  • エクセルで、2つの条件に合う結果を自動で入力したい

    お願いします。 下記のような商品の価格一覧表があります。 A列に、商品名 B列に、大きさ C列に、単価 別表で売り上げ入力していますが、 Aの商品名と、Bの大きさは、リストから選択入力していますが、 AとBの組み合わせでCの単価は決まっているのに、毎回リストから同じように選択して入力しています。 このCの単価を、AとBを入力したら、自動的に出てくるようにしたいです。 よろしくお願いします。

  • エクセル 行挿入時の自動計算

    エクセルについて教えてください。 例えば、エクセルシートの1~10行目を使っているとして、 C列のみに計算式が入っているとします。 ex C列の計算式→A×B=C 通常、5行目に新たに行を挿入すると、Cは空欄になるかと 思います。Cには計算式が入っていないため、例えば、上下の 行のCの計算式を手動でコピーしてくると思います。 ここで質問なのですが、この新たに追加した5行目のCについて 手動ではなく、自動で計算させることはできますか? マクロとかはあまり詳しくないので、例えばオプション設定等で できるようになるとうれしいのですが。 お分かりになる方、回答をよろしくお願いいたします。

  • EXCEL行挿入・行削除しても正しく集計する方法

    例えばSUM関数で、1~10行目までが明細行で、11行目に合計行がある場合、明細の途中で1行挿入しても、自動的に集計範囲が変わってくれますが、最終明細行の下に行挿入した場合、集計範囲が変わってくれません。  (1)SUM(C1:C10) → 明細途中に1行挿入 → SUM(C1:C11)  (2)SUM(C1:C10) → 明細最後に1行挿入 → SUM(C1:C10) (2)の場合でも、全明細行集計するようにする方法(関数)があれば教えてください。(Office365使用) よろしくお願いします。

  • EXCELの「挿入」-「名前」-「ラベル」について

    EXCEL2000「ラベル」ですが、ヘルプを見てラベルを設定すると数式の中でセル参照の 代わりとして利用できるというのはわかったのですが、 実際の操作方法やどういう状況で使うかがよくわかりません。 例えば、次のような表の場合、  | A | B | C | D | ------------------- 1|   |単価 |数量 |金額 | ------------------- 2|山田 |  5| 10|   | ------------------- 1)「A2:C2」を選択し、行ラベルをオンにして設定しようとすると、 「行ラベルは1つの列幅でなければ・・・」と表示され実行できません。 (選択範囲がA2のみの場合はOK) 列レベルの場合は、「B1:C2」といった選択ができるのに、行ラベルの場合は なぜ1列しか選択できないのでしょうか。 2)設定画面の「行ラベル」「列ラベル」とは、「行見出し」「列見出し」と 考えればよいのでしょうか。 3)ラベルを作成しなくても、「ツール」-「オプション」-「数式でラベルを使用する」が オンになっていれば、C列に「=単価*数量」の式を入力するだけで金額が求められます。 にも関わらず、ラベルも設定するときとはどのような場合でしょうか。 4)ラベル作成路の範囲選択は「B1:C2」のように、列見出しなどを含んだ状態で 実行するものなのでしょうか。また、B1やC1は列見出しなので、 ラベル範囲ダイアログボックスでは「列ラベル」ということでよいのでしょうか。 5)ラベルは、「ツール」-「オプション」-「数式でラベルを使用する」をオンにしないと 有効にならないものなのでしょうか。 6)名前の定義とラベルの2つはどのような状況で使い分ければよいのでしょうか。 よくわかっていないため変な質問をしているかもしれませんが、どうかよろしくお願いします。

専門家に質問してみよう