• ベストアンサー

エクセルで不特定の項目ごとに合計を自動計算したいのですが。

こんな表があったとします。 品名  数量  単価  金額 りんご  10  250  2500 ばなな  8  120  960 すいか  15  700  10500 ばなな 3 120 360 りんご 21 250 5250 ↓ りんご 7750 ばなな 1320 すいか 10500 こんな感じに自動で入力された商品ごとの合計金額を計算したいのです。 商品は不特定ですのでどんなものが入力されるか分かりません。 宜しくお願いいたします。

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

  • ベストアンサー
  • rin01
  • ベストアンサー率43% (33/76)
回答No.8

こんにちは~♪ 皆さんお勧めのピボットテーブルが、 1番良いと思うんですが~。。 >データーの更新をせずに表を作った時点で自動的に >更新できる方法がないかと思っています 更新が、面倒ですか? でしたら、数式か、VBAになるのではないでしょうか? ★数式の案ですけれど。。。 同シートの場合です。 mike_gさんの表をお借りします。。。。すみません。 F2: =IF(COUNT(INDEX(1/(MATCH($A$2:$A$100,$A$2:$A$100,)=ROW($1:$99)),))<ROW(A1),"",INDEX(A:A,SMALL(INDEX(SUBSTITUTE(ISNUMBER(1/(MATCH($A$2:$A$100,$A$2:$A$100,)=ROW($1:$99)))*1,0,10^7)*ROW($1:$99)+1,),ROW(A1)))) 下にコピーしておきます。 mike_gさんの表のF列の様に、品名が抽出されます。 注)あまりデータ行が多いと、重くなります。。。 ★合計は、 これも、mike_gさんのをお借りして~。。。 >セル G2 に次式を入力して、此れを下方にズズーッと入力 >  =IF(F2="","",SUMIF(A$2:A$100,F2,D$2:D$100)) 。。。。Rinでした~♪♪

oldbook915
質問者

お礼

解決しました! 大変助かりました。胸のつかえが取れたようです。 本当にありがとうございました。

その他の回答 (11)

回答No.12

ピボットテーブルに拘っているわけではありませんが、追記します。 >こんな感じに自動で入力された商品ごとの合計金額を計算したいのです。 自動でデータが入ってくるとのことなので今回のケースでは質問者さんはデータの入力者ではないですね。他者が入力するか、DB等からデータを引っ張ってくるか >データーの更新をせずに表を作った時点で自動的に更新できる方法 これがいつなのか?が問題ですね。 1.他者が入力して、その時点で合計も同時に(データ更新なしに)確認をしたいのであれば関数で求めるしかありませんが文面からして違うでしょう。 2.入力者と別の方、もしくはDB等から抽出したデータの合計を求めるのであれば合計確認者が当該BOOKを開いた時点ということになります。 3.当該BOOKを開いている最中にDB等からマクロなどを使い(手動は無いでしょう?)データを引いてくる場合はその直後ですね。 ※その他の状況もあるかもですが・・・ ※排他書き込み許可は考慮してません。推奨されないと思うので。 2であれば、ピボットテーブルのオプションで「開いた時に更新する」にチェックすれば解決します。 3であればマクロの最後に当該シートを選択後 ActiveSheet.PivotTables("任意の名前").RefreshTable を実行すれば自動で更新されます。

oldbook915
質問者

お礼

ありがとうございます。 実は、私は建設会社で原価管理をして入る者です。 今回質問させていただいたのは、工事の原価計算書から業者別の発注工事額を自動で求めたかったのです。 今までは手計算をしていましたが、なんとか関数を使って自動でできないかなーと常々思っており、今回解決できて非常によかったです。 原価管理の担当者はたくさんおり私も含めてみんな苦労して計算していますので、今回の関数を埋め込んだ原価計算書を配布したいと思います。 皆様ほんとうにありがとうございました。

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

こんばんは。 どの程度の自動化をお望みか分かりませんが、このマクロを、コントロールツールのボタンに取り付けたらどうかと思います。フィルタオプションを駆使しても、慣れれば、そんなに時間的な差があるわけではありませんが。 'シートモジュール 'コントロールツールのボタン・イベント Private Sub CommandButton1_Click()  Call ListUp End Sub '標準モジュール 'データは必ず、項目行(タイトル名)が必要です。 Sub ListUp() Dim r As Range '---------------------------- '**初期設定**      'データの書き出し場所   Const TO_PASTE As String = "F1"   'データの左上端の位置   Set r = Range("A1").CurrentRegion '----------------------------  Application.ScreenUpdating = False  Range(TO_PASTE, Range(TO_PASTE).End(xlDown)).ClearContents    With r.Columns(1)     If .Cells.Count < 3 Then Exit Sub 'データが少なすぎる    .AdvancedFilter Action:=xlFilterCopy, _            CopyToRange:=Range(TO_PASTE), _            Unique:=True  End With  With Range(TO_PASTE, Range(TO_PASTE).End(xlDown))   'フィルタオプションが失敗している場合   If .Cells(.Count).Row = 65536 Then Exit Sub   Set r = r.Offset(1).Resize(r.Rows.Count - 1)     .Cells(1).Offset(, 1).Value = "金額"     .Offset(1, 1).Resize(.Rows.Count - 1).FormulaLocal = _    "=SUMIF(" & r.Columns(1).Address(1, 1, 0) & ",RC[-1]," & _     r.Columns(4).Address(1, 1, 0) & ")"  End With    Set r = Nothing   Application.ScreenUpdating = True End Sub

oldbook915
質問者

お礼

マクロになるかなーと思っていましたが。関数でやりたかったのです。 皆さん本当にありがとうございました。

noname#204879
noname#204879
回答No.10

[ANo.9回答]への補足コメント、 》 それも嫌うなら貴方を満足させる方法はない、と思います。 と述べましたが、[ANo.8回答 Rin]さんが見事に解決されていましたね。Rinさんに脱帽 m(__)m でもォ~、失礼ながら、oldbook915さんはそれを解読(理解)できますかぁ?

oldbook915
質問者

お礼

理解できません

noname#204879
noname#204879
回答No.9

[ANo.7この回答へのお礼]に対するコメント、 》 データーの更新をせずに表を作った時点で自動的に更新できる方法がないかと思 》 っています。 あらかじめ、全ての品名をF列に列挙しておいたら如何かと。この場合、A列に登場しない品名の合計額は 0 と表示されますが。 それも嫌うなら貴方を満足させる方法はない、と思います。

noname#204879
noname#204879
回答No.7

ピボットテーブルによる集計がお奨めだけど、新たに入力されたデータを結果に反映させるために[データの更新]を実行する必要があります。 下記の SUMIF関数による集計は、新たに入力されたデータが既存の品名の場合は結果が自動更新されるが、新たな品名が入力された場合は、ステップ2~7を再実行する必要があります。    A   B   C   D  E  F    G 1 品名  数量 単価 金額   品名  合計額 2 りんご  10  250  2500   りんご  7750 3 ばなな   8  120  960   ばなな  1320 4 すいか  15  700 10500   すいか  10500 5 ばなな   3  120  360 6 りんご  21  250  5250 7 1.範囲 A1:A100 を選択 2.[データ]→[フィルタ]→[フィルタオプションの設定]を実行 3.[抽出先]として“指定した範囲”に目玉入れ(あるいは、そうなっていることを確認) 4.[リスト範囲]が $A$1:$A$100 を入力(あるいは、そうなっていることを確認) 5.[抽出範囲]が $F$1 を入力(あるいは、そうなっていることを確認) 6.“重複するレコードは無視する”にチェック入れ(あるいは、そうなっていることを確認) 7.[OK]をクリック 8.セル G2 に次式を入力して、此れを下方にズズーッと入力   =IF(F2="","",SUMIF(A$2:A$100,F2,D$2:D$100))

oldbook915
質問者

お礼

ありがとうございます。 データーの更新をせずに表を作った時点で自動的に更新できる方法がないかと思っています。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.6

品名でソートしてから 「データ」「集計」で合計を求めるだけです 合計欄だけでよければグループの詳細を折りたためばいいのです

回答No.5

>混在していても、混在している通り表示し合計を計算したい とは、「りんご」と「リンゴ」は別物と判断して良いと云うことでしょうか? 関数ではありませんがピボットテーブルを使って見ては? ウィザードに従って、行に「品名」、データに「金額」の合計を選択。 で、出来ます。いかがでしょう?

oldbook915
質問者

お礼

ピボットテーブルは使った事がないので一度使って見ます。 ありがとうございました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

以下の方法は如何でしょうか。 仮に表リストがシート1、シート2に合計項目セルをA列とし、金額合計セルB1に=IF($A1<>"",SUMIF(sheet1!A:A,$A1,sheet1!D:D),"")をした方向にコピーで如何でしょうか。

oldbook915
質問者

お礼

ありがとうございます。

  • ipsum11
  • ベストアンサー率21% (55/251)
回答No.3

「= SUMIF(A2:A6,"りんご",D2:D6)」で、りんごの合計 「= SUMIF(A2:A6,"ばなな",D2:D6)」で、ばななの合計 「= SUMIF(A2:A6,"すいか",D2:D6)」で、すいかの合計

oldbook915
質問者

お礼

ありがとうございます。

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.2

たとえば、品名A列 数量B列 単価C列 金額D列で9行目まで数値が入っているとして、E1に品名を入れると、F1に合計が出るようにするなら、=SUMIF(A1:D9,E1,D1:D9)です。つまり、E1と同じ品名の行の金額(D列)だけを合計するとういうことになります。 表が大きくなればD9をD100とかD1000とかにするだけです。 このときE1にはA列にある物と同じ名前を入れなければいけません。ですから、A列には「りんご」となっているのにE1に「リンゴ」としてしまうと、合計できませんし、A列に「りんご」と「リンゴ」が混在している場合は別の物と判断してしまいますので注意してください。 こんな感じで良いでしょうか? 参考までに。

oldbook915
質問者

補足

早速ありがとうございます。 ご指摘の通り「りんご」と「リンゴ」が混在している場合なのです。 本当に調べたかったのは「不特定」ということです。 混在していても、混在している通り表示し合計を計算したいのです。 SUMIFだと検索条件を特定しないといけませんが、不特定の検索条件に対応した計算式が分からないのです。 スミマセンがいかがでしょうか?

関連するQ&A

  • 自動入力項目に手入力もできるようにしたい。

    簡単に説明します。 次の表を作成しています。 品名 単価 数量 金額 ーーーーーーーーーーー 品名を入れると次の単価表から単価を表示し、数量を入れると金額を計算して表示します。このとき特定のD、Fについては、その都度単価を 手で入力したい。D、Fの単価表には9999と仮にいれてあります。  単価表 ーーーーー A  10 B 100 C1000 D9999 E   1 F9999

  • エクセル2000で・・

    品番 品名  単価  在庫数 1  リンゴ  120  1000 2  ミカン  100  1000 3  バナナ  80  1000 という表があるとします。 次に別シートに 品番 品名  単価  売れた数 2  ミカン  100  10 と、売れた分量を示す表があります。 そしてもう一つ別シートに 品番 品名  単価  在庫数 1  リンゴ  120  1000 2  ミカン  100  990 3  バナナ  80  1000 というシートがあり、一つ目のシートから二つ目のシートで売れた分の数を引いた数量を表す表があります。 二つ目の表を入力した際に、自動的に三つ目の表の在庫数が表示されるような関数はありますでしょうか?

  • エクセル 計算が自動的に切り替わらない

    こんにちわ お願いします。 会社で見積書を作成してます。 エクセルで見積書作成したファイルを基にコピーし、数量、単価だけを変更、別見積書作成しました。その際自動的に合計数量が計算されません。(計算される時もあります。) 計算方法は、基の見積表:数量x単価=合計金額 総合計はzで入力して見積書作成しています。 前に作成した。見積書をコピーして数量などを変更して出したいのです。 良いファイルの作成方法があれば教えて下さい。 よろしくお願いします。

  • Excelでこういうことは出来ますか?

    例えば、セルA1に数量。セルA2に単価。セルA3にA1*A2で小計という計算式を入れて計算させたいのですが、場合によりセルA2に単価を入れずに直接セルA3に合計金額だけを入れたいのです。 つまり、 品名    数量  単価   小計 すいか    10   300  3000 加工費   1   (空白) 2500 こういう表にさせたいのです。 どうすればよいでしょうか? わかりにくいかもしれませんが、どしどし補足していただいて結構ですのでよろしくお願いいたします。

  • エクセルで注文書→請求書を作っていて困っています。

    下記のような注文書がSheet1にあります。 A列  B列 C列  D列 E列 品名  数量 単位 単価  小計 りんご 1  個  100 ¥100 みかん 0  個   30 ¥ 0 バナナ 2 本  100 ¥200 スイカ 2  個 200  ¥400 メロン 0 個  300 ¥ 0      合計 ¥700 上表のような顧客が数量を入力すれば小計が出るとこまでは出来ています。 Sheet2に注文のあった品目のみで請求書を生成したいのですが、 良い方法がありましたら教えていただけますでしょうか。 A列  B列  C列  D列  E列 品名  数量 単位  単価  小計 りんご 1  個   100 ¥100 バナナ 2 本   100 ¥200 スイカ 2  個 200  ¥400       合計 ¥700 ※要するに品名のラインナップがある中で0個のものは飛ばして  上図のような形に自動生成できるものが希望です。 色々な関数を試してみましたが、結果関数の意味も分からずやっているので、 なかなか思うようにできなくて困っています。 どうぞ、良い方法がありましたらご教示の程、よろしくお願いいたします。

  • 1列おきの単価×数量を合計する方法

       A    B    C    D    E    F  ・・・ 1  品名1 数量1  単価1 品名2 数量2 単価2・・・単価30 2 リンゴ  1    100    梨    2    300   上記の様な表があります。 2行目の金額を計算する場合通常でしたら =B2*C2+E2*F2・・・ という計算式と使用しますが、 品名が30を超える場合もあるので、上記の計算式では足していくのが非常に大変です。 数量×単価を、簡単にかけてくれる計算式はありますでしょうか?? MODやCOLUMNを使用して色々試してみたのですが、わからなかったので教えて下さい・・・ 宜しくお願い致します。

  • 任意のセルに小計、合計と入力したら自動計算してくれ

    エクセル2007でVBAを何度も挫折しています 任意のセルに小計、合計と入力したら自動計算してくれるVBAの方法を教えてください セル G21 商品名 L21 詳細 V21 数量 X21 単位 Z21 単価 AD21 金額(V21:数量*Z21:単価) の何処にでもある見積書なのですが 任意のG行に小計・合計と入力すると AD行に金額が自動で入力させるVBAの仕方が知りたいです。 3行ほどの見積もあれば100行を超える見積もあります 教えてください。

  • ファイルメーカー6のif関数について

    ファイルメーカー6、MacOS9.2を使ってる初心者です。 ファイルメーカーの事で前も教えて頂きましたが、またお願いします。 商品名、数量、単価、合計という4つのフィールドがあります。 合計フィールドは数量フィールド×単価フィールドという計算式で出していて これ自体は問題ないんですが、 商品名を値一覧から(約10品名)選び、選んだ品名から自動で 単価を入れたいんですがやり方が分かりません。 例えば商品名にみかんを選んだ場合は単価に50を、 リンゴを選んだら70を バナナを選んだ90を・・・・ こんな感じで10品目分を設定したいんですが出来ません。 ひとつだけならif関数で出来たんですが・・・ もちろん、設定が出来るならif関数じゃなくても良いんです。 よろしくお願いいたします。

  • Excel計算が合わない

    Excelで請求書を作成しましたが、合計金額が一円単位出会わないことがあります。 表は簡単に数量x単価=合計      数量x単価=合計           金額合計   金額の合計の答えが1001だとしても時々1000だと計算したりしてます。  考えられるのは小数点を使った計算があるからかもしれませんが???数量0.5x単価33円=17とか四捨五入があるときによく間違いがあるような気がします。 手直しする方法を教えてください。

  • 【EXCEL2000】2つのリストの合計を出すには?

    リストA リンゴ 3 みかん 5 バナナ 2 スイカ 3 リストB りんご 2 メロン 4 バナナ 3 いちご 2 ↑のような2つのリストがあるとして、 リストC りんご 5 みかん 5 バナナ 5 スイカ 3 メロン 4 いちご 2 リストA・Bの合計がリストCのようにするにはどのような関数を使えばいいかお解りになる方教えてください。 判りづらい質問で申し訳ありません。m(_ _)m ※品名と数量は別セルです。

専門家に質問してみよう