エクセル2003で仕入金額を集計する方法はある?

このQ&Aのポイント
  • エクセル2003で仕入金額を打ち込んだデータを元に、仕入先別に合計金額を出す方法はありますか?
  • 仕入記入台帳には仕入金額を記入し、別シートの仕入先別集計表に合計を反映させたいです。
  • 500行程度の仕入記入台帳に対して、約50社の仕入先の集計を効率的に行う方法はありますか?
回答を見る
  • ベストアンサー

エクセル2003で、入力した数値のまとめを自動で

エクセル2003で、仕入金額をとにかく打ち込んだシートがあります。別シートに打ち込んだデータを元に仕入先別に合計金額を出す方法はありますでしょうか 図の様に”仕入記入台帳”に記入していくのですが仕入先の件数はどんどん増えます(新規で買う場合もあるので) そして別シートの”仕入先別集計”に合計を出したいのです 全て入力完了後に≪ツール≫→≪集計≫で集計すればいいのはわかっていますが、 とにかく仕入記入台帳にどんどん入力していき、その集計がどんどん仕入先別集計表に反映させるようにしたいのです 仕入記入台帳は1月(つき)1シートで管理していますが、記入する行数はだいたい500行くらいです 仕入先の件数はだいたい50社くらいです 何か良い方法はございませんでしょうか お分かりの方いらっしゃいましたらご教授宜しくお願い致します

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

>可能であれば合計するシートに集計表示させる仕入先名の順番を A-Z、0-9順で上から順に表記できるものでしょうか 関数で表示することも可能ですが、エラー処理などを含めてきわめて複雑な配列数式になるため、あまりお勧めできません。 このような項目名の表示順を変えたいような場合は、すでに回答したピボットテーブルを利用すれば項目の並べ替えを一発で行うことができます。 ちなみに関数で表示するなら以下のような数式で昇順に並べ替えて表示できます。 1つ目にデータは以下の式で表示できます(例えばH2セルに入力する場合)。 =INDEX(A:A,MAX(INDEX((LARGE(COUNTIF($A$2:$A$100,">"&$A$2:$A$100),ROW(A1))=COUNTIF($A$2:$A$100,">"&$A$2:$A$100))*ROW($A$2:$A$100),))) 2つ目以下のデータは以下の式で表示できます。 =IF(OR(H2="",COUNTA($A$2:$A$100)<COUNTIF($A$2:$A$100,"<="&H7)+1),"",INDEX(A:A,MAX((LARGE(COUNTIF($A$2:$A$100,">"&$A$2:$A$100),COUNTIF($A$2:$A$100,"<="&H2)+1)=COUNTIF($A$2:$A$100,">"&$A$2:$A$100))*($A$2:$A$100<>"")*ROW($A$2:$A$100)))) 入力後Ctrl+Shift+Enterで確定してください。

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

遅くなってごめんなさい。 会社名にはコード番号もあるとのことですね。 例えばシート3のA1セルから下方にコード番号が、それに対応する社名がB1セルから下方にあるとすれば、そのB列をコピーしてシート2の社名の列に貼り付ければよいように思いますね。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! 横からお邪魔します。 No.3さんの補足に >可能であれば合計するシートに集計表示させる仕入先名の順番を・・・ とありますが、 数式で表示されているデータで並び替えを行っても何も変化しないはずです。 元データそのものを並び替える必要があります。 ただ元データには手を付けないという前提で! VBAになってしまいますが、一例です。 Sheetの配置は↓の画像のようになっているとします。 画面左下のSheet2(仕入先集計Sheet)の Sheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) この際ですのでB列の数式も一緒に入れてしまいました。 Sub test() 'この行から Dim i, k As Long Dim ws As Worksheet Set ws = Worksheets("Sheet1") '←「Sheet1」の部分は実際のSheet名に! k = Cells(Rows.Count, 1).End(xlUp).Row If k > 1 Then Range(Cells(2, 1), Cells(k, 2)).ClearContents End If For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Columns(1), ws.Cells(i, 1)) = 0 Then Cells(Rows.Count, 1).End(xlUp).Offset(1) = ws.Cells(i, 1) End If Next i k = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(2, 1), Cells(k, 1)).Sort key1:=Cells(1, 1), order1:=xlAscending Range(Cells(2, 2), Cells(k, 2)).Formula = "=SUMIF(Sheet1!A:A,A2,Sheet1!C:C)" End Sub 'この行まで ※ 関数でないのでSheet1のデータ変更があってもすぐに反映されません。 Sheet1のデータ変更があるたびにマクロを実行する必要があります。 ご希望の方法でなかったらごめんなさいね。m(_ _)m

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

関数で対応するならA2セルに以下の式を入力して、下方向に50個程度オートフィルコピーして仕入先の一覧を取得します(元データがSheet1にある場合)。 =INDEX(Sheet1!A:A,SMALL(INDEX((MATCH(Sheet1!$A$2:$A$500&"",Sheet1!$A$2:$A$30&"",0)<>ROW($A$2:$A$500)-1)*1000+ROW($A$2:$A$500),),ROW(A1)))&"" B2セルには以下の式を入力して下方向にオートフィルします。 =IF(A2="","",SUMIF(Sheet1!A:A,A2,Sheet1!B:B)) しかし、表示データ数が増えると再計算に時間がかかるので、このようなケースでは関数ではなくピボットテーブルの機能を利用することをお勧めします。 「データ」「ピボットテーブルと・・・」でウィザードを起動し、フィールドリストから行フィールドに「仕入先」、データフィールドに「金額」をドラッグしてください。 今後データが増加するならウィザードの最初で元データの範囲を大きめに設定しておき、作成されたピボットテーブルで「(空白)」の集計項目の上で右クリックし「表示しない」にしてください。 データを追加したときは、ピボットテーブルの上で右クリックして「更新」してください。

moongush
質問者

補足

ありがとうございます!すばらしいです! 全く違う関数になってしまうかもしれませんが・・・ 可能であれば合計するシートに集計表示させる仕入先名の順番を A-Z、0-9順で上から順に表記できるものでしょうか

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。シート2のA列にも自動で社名を表示させるのでしたら次のようにします。 シート1のD列を作業列としてD2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,MAX(D$1:D1)+1,"")) シート2ではA2セルに次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!D:D),"",INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!D:D,0))) B2セルへの入力の式は回答1のとおりです。

moongush
質問者

補足

ありがとうございます!!試しに作成した表に入れてみたらうまくできました!ありがとうございます しかし実際は社名を一件一件手打ちしていては手間なので、 A列の横に”取引先コード”列を入れていて、各仕入先にコード番号を振り当て、 名前の定義をし、例えば取引先コード列に”001”と入力するとが仕入先列に”A社”と表示されるようにしてあるのです その中にお教え頂いた数式を入れたのですが、合計を表示するシートに社名も金額も#N/Aと表示されてしまいうまくできません。。。 再度お教えいただけると幸いです 何卒宜しくお願い申し上げますm(_ _)m

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

シート1に元のデータが有るとしてシート2のB2セルには次の式を入力して下方にドラッグコピーします。 =IF(A2="","",SUMIF(Sheet1!A:A,A2,Sheet1!C:C))

関連するQ&A

  • エクセル2003 こんなことってできますか?

     商品別で仕入日順に・仕入先・仕入数量・仕入単価を記入する表を作りました。  この表のデータを基に仕入先別の表を作りたいと思っています。  商品別の表は、A列のセルを5個ずつ連結し商品名を記入し、B列以降は仕入日・仕入先・仕入数量・仕入単価・仕入合計額を記入していくように作りました。  A1~A5を連結 商品名を記入 (A6以降も5個ずつ連結)  B列以降   1行目 日付   (直接入力)   2行目 仕入先名 (直接入力)   3行目 仕入数量 (直接入力)   4行目 仕入単価 (直接入力)   5行目 仕入合計額(=B3*B4)  上記の表に対して、仕入先別(A商店・B商店・・・)の表をそれぞれ作り、商品別の表の仕入先名に入力されたときに該当する仕入先別の表へ商品名や日付金額が自動でコピーされるようにしたいのです。 仕入先別の表は形も決めてないのですが、商品別のほうはすでに完成しています。 このような状況で使える関数とかその他の方法ってあるのでしょうか? もし、できない場合はここを変えればできるかもみたいな助言でも結構です。 よろしくお願いします。

  • エクセル 日計表から月計表に自動入力

    エクセル2007です。自分の拙い知識ではできません。教えてください。 仕事で毎日様々な書類をとりまとめ、その件数を日計表に入力、印刷したらそれを表紙にして毎日決裁をとっています。 さらにその件数を月計表(月別リスト)に入力し直し、月ごとの集計を行っています。 つまり毎日、同じ数字を入力する作業を2回(日計表と月計表)行っているわけです。 そこで入力を1回で済ませたく、日計表の数字をそのまま月計表に反映させられないかと 思っています。 Sheet1に日計表、Sheet2以降が月計表となっており、4月・5月・6月・・・3月と1年分が続きます。 日計表と月計表は様式は全く異なっています。 月計表は先頭行が項目、1列目が日にちです。 理想は’日計表に入力したら、それが月計表のその日にちの欄に反映される’ことです。 ・・・が、難しそうなので、逆パターンで、先に月計表に件数を入力、その数字を日計表に 取り込む方法でもいいかなと考えましたが、vlookupによる参照を考えましたが、 月計表が複数あるので月替わりに参照シートの指定をいちいちやり直すのか??? (自分だけが使うわけではないのでそれは困る)・・・など、いろいろとお手上げになってしまいました。 文章での説明だけで分かりづらくてスミマセン。 マクロは全然わかりませんので、関数だけでできれば・・・と思います。

  • エクセルの集計で

    エクセルの集計で以下のようなことを早くする方法がないかお聞きします。 A列に仕入先B列に仕入金額が入ったデータがあり (A列は仕入先によって行数が異なります)、 C列で仕入先ごとの集計をしたい場合、 現在は〇〇商店の1ヶ月の合計を出すためにオートザムで B列の〇〇商店のみのデータを集計しています。 仕入先の行数が同じならばコピーしていけばいいのですが、 違うので何か簡単に集計する方法がないかお尋ねします。

  • ファイルメーカープロでの集計について教えてください

    ファイルメーカープロ6をWindowsXPで使用しています。現在売上仕入に関する集計のレイアウトを作っているのですが、それについて教えてください。  Aという得意先に売上があり、それに対する仕入先が数社(最大20社)あるというレイアウトでひとつのレコードにしています。 Aに対する売上高、合計の仕入高での集計はできました。では仕入先別の仕入高を集計したい場合、仕入先というフィールドと仕入高というフィールドを繰り返しフィールドで20作ってしまうと、集計の際に仕入先別の金額がだせませんよね。仕入先別の集計をするには20のフィールドを別々のフィールドとして作ればできるのでしょうか?

  • excelで日計表と月計表を作りたい

    excelで日計表と月計表を作りました。 同じファイル内に1枚が月計表、残り31枚が日計表です。 日計表に値を入力すると月計表に反映するようにしたのですが、一部が上手くいきません。 皆さんのお知恵をお貸し下さい…。 具体的に言うと、 ●結果がAだったものの件数 ●結果がBだったものの件数 ●その合計 以上を日計表に記入し、 月計表で集計したいのです。 ポイントは、 ○月計表で、未来の日付の欄は空欄にし、 月末に出す平均値に反映させたくない (つまり、今日が20日だとすると20日までの 平均値が行末に出るようにしたい) ということです。 文章で説明すると分かりにくいですが、宜しくお願いします。

  • エクセルで入力用の場所に入力したら、入力内容が番号ごとに反映される方法を教えてください。

    エクセルで入力用の場所に入力をしたら、その入力内容が番号ごとに別のシートに反映されるようにしたいのです。 反映される表は、『材料費の表』と『会計帳簿』です。 入力項目は 1.仕入先 2.月日 3.工番 4.材料区分 5.材質 6.種類 7.品名 8.寸法 9.数量 10.単位 11.重量 12.単価 13.仕入金額 14.支払金額 15.差引残高 16.備考 この16項目の中から 材料費の表には 1.仕入先 2.月日 3.工番 4.材料区分 5.材質 6.種類 7.品名 8.寸法 9.数量 10.単位 11.重量 12.単価 13.仕入金額 16.備考 の項目を転記させ、1工番につき1シート、工番ごとに振り分けたいんです。 ※工番25=シート1  工番26=シート2 というように…。 工番は100番前後まであります。 会計帳簿には 1.仕入先 2.月日 7.品名 8.寸法 9.数量 10.単位 11.重量 12.単価 13.仕入金額 14.支払金額 15.差引残高 16.備考 の項目を転記させ、1仕入先につき1シート、仕入先ごとに振り分けたいんです。 仕入先の数は100前後です。 それぞれ1年分のデータを入力しないといけないので10000行はほしいのです…。 入力する内容がたくさんで、でも中身は同じなのでどうにか連動させて入力する手間を省きたいのです。 私はコンピューターのことが全然わからないので、どうしても人より時間がかかってしまいます…。 他にもやらなければならない仕事がたくさんあってどうしてもこれだけのために時間を割くことができないのです…。 いろんな方の質問を参考にやってみようと思ったのですが何が書いてあるのかちんぷんかんぷんで… お忙しいかとは思いますが、こんな私を助けてください。

  • エクセルのセルに入力した名前を数値化

    どなたかご教授頂ければ幸いです。 エクセルの文字列(一覧表)に 田中 田中 鈴木 鈴木 佐藤 田中 田中 佐藤 佐藤 鈴木 佐藤 佐藤 と入力されているものを 集計表に 田中・・・4 鈴木・・・3 佐藤・・・5 とし、集計したいのですが、 名前を数値に読み替える方法がわかりません。 良い方法があればお教えください。 部下の月次訪問件数を容易に集計する方法を模索中です。 余計な入力を部下にさせたくないので、プルダウンで自身の 名前を選ぶだけで入力を完了とし、別の場所に作った 集計表に数値(件数)となって落ちていくものを作りたいと考えています。 よろしくお願いします。

  • excel 記入文字列の集計

    よろしくお願いします。 入力用シートのある列で文字列の記入が合った時に、集計用シートにその文字列を集計していくようにしたいのです。 例:入力用シート  行数 :集計列 1  :aaaa 2  :記入なし   3  :bbbb 4  :記入なし 5  :記入なし 6  :cccc 集計用シート 行数 :集計列 1  :aaaa   2  :bbbb 3  :cccc よろしくお願いします。

  • エクセルについてご教示願いたい。

    エクセルについてご教示願いたい。 1. 一か月分の3種類の商品別集計表を作りたいです。(最終的に3枚プリントします。) 2. 内容は、いつ、誰に、いくつ商品を渡したかを商品別(たとえば、りんご表、ミカン表、ぶどう表)に 3枚の表にまとめます。今まで、一つ一つ手書きで入力していますが、とても大変です。    3. 入力表を作成して、そこから、集計表に転記できないでしょうか?     文章がへたくそで伝わりにくいと思いますが、ご教示をお願いしています。

  • エクセルの質問です

    このところエクセルについてココに質問を数回させていただいております。助かっております。ありがとうございます。 で、懲りずにまた質問させていただきます。 エクセルにて簡単な家計簿のようなものを作っております。 1月から12月までの12枚のシートをつくっていて 13枚目に各月の集計的なシートを作っております。 各月のシートには日付、曜日、使用用途、使用金額を記入するようにしています。 で質問ですが 1、 13枚目の集計用のシートに各月の12枚のシートから集計して曜日ごとに使用した金額を表示しようとしているのですが上手くいきません。 どうすれば上手くできるでしょうか? 2、 質問1と同じような事なのですが、使用用途別に集計したいのですが、使用用途はカテゴリーがたくさん出てくるので、 例えばあるセルに「食費」と入力すればその右となりのセルに年間で使った食費の合計が表示されるようにするのは難しいでしょうか?(数式に条件を記入するのではなくセルに入力するようにしたいのですが) ネットで色々調べましたがコレというのが見つかりませんでした、よろしくお願いします。

専門家に質問してみよう